Question

Comment exécuter TestCase est de l'IDE?

J'ai créé un nouveau projet, avec un seul, simple, sous forme:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

end.

Maintenant, je vais ajouter un test pour vérifier que pousser Button1 fait ce qu'il doit:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
    TestFramework;

type
  TForm1Tests = class(TTestCase)
  private
        f: TForm1;
  protected
     procedure SetUp; override;
     procedure TearDown; override;
  published
     procedure TestButton1Click;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    //todo
end;

{ TForm1Tests }

procedure TForm1Tests.SetUp;
begin
  inherited;

    f := TForm1.Create(nil);
end;

procedure TForm1Tests.TearDown;
begin
    f.Free;
  inherited;
end;

procedure TForm1Tests.TestButton1Click;
begin
    f.Button1Click(nil);
    Self.CheckEqualsString('Hello, world!', f.Caption);
end;

end.

Étant donné ce que je l'ai fait (code de test dans le projet GUI), comment je ne déclenchent maintenant une série de tests? Si je pousse F9 alors la forme apparaît simplement:

L'idéal serait un bouton ou une option de menu, dans l'IDE dire exécuter des tests Dunit :

ce que je vis dans un monde de rêve? Un pays imaginaire, vivant dans une maison sur la voie de jujube sucettes?

Était-ce utile?

La solution

Je suis d'accord avec Uwe Raabe, mais parfois il peut être utile d'avoir un lien « caché » au sein de votre application pour exécuter l'interface graphique DUnit. J'utilise:

TGUITestRunner.runRegisteredTests;

Appelons cela de votre bouton à l'interface graphique DUnit ouvrira ses portes pour vous d'exécuter manuellement et sortie de test de la vue.


Par exemple, si vous maintenez une combinaison de touches spéciale lors de l'ouverture du logiciel propre « Panneau de configuration » , vous obtenez des entrées avancées:

entrer image description ici

Autres conseils

Ajout d'un TestCase au projet principal n'est pas la voie à suivre. Vous devez créer un TestProject séparé (vous pouvez avoir dans le même ProjectGroup que le projet principal), ajouter un TestCase et exécuter.

J'aime l'idée d'avoir une commande 'Run DUnit tests' dans l'IDE.

Il pourrait être mis en œuvre par la vérification d'un projet DUnit dans le même dossier, ayant le même nom que le projet en cours:

  • Project1.dpr -> le logiciel sous test
  • Project1.Tests.dpr => l'application de test DUnit

Dans ce cas, l'IDE devrait permettre à la commande Exécuter les tests DUnit.

  • Après l'exécution des tests, une liste de tous les tests défectueux doit être affiché qui permet de passer à la ligne de source où un test a échoué .

  • Si les tests ont causé des fuites de mémoire, une liste de toutes les fuites doit être affiché qui permet de passer à la ligne de source où la fuite de mémoire a été créé

(DUnit peut être configuré pour détecter des fuites de mémoire et de ne pas les tests où l'on a trouvé)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top