DUnit: Wie Tests laufen?
-
21-09-2019 - |
Frage
Wie führe ich Testcase 's aus den IDE?
i erstellt ein neues Projekt, mit einem einzigen, einfachen, Form:
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.
Jetzt werde ich einen Testfall hinzufügen zu prüfen, ob Button1
schieben tut, was es soll:
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.
Nach dem, was ich getan habe (Test-Code in dem GUI-Projekt), wie auslösen ich jetzt einen Lauf der Tests? Wenn ich drücken F9 dann einfach das Formular angezeigt wird:
Im Idealfall wäre es eine Taste sein oder Menüoption in der IDE zu sagen Ausführen DUnit Tests :
Lebe ich in einer Traumwelt? Ein Fantasy-Land, auf Lollipop Lane in einem gumdrop Hause leben?
Lösung
Ich bin mit Uwe Raabe, aber manchmal kann es nützlich sein, einen ‚versteckten‘ Link in Ihrer App zu haben, das DUnit GUI laufen. Ich benutze:
TGUITestRunner.runRegisteredTests;
Rufen Sie diese von Ihrem Button am DUnit GUI öffnet sich für Sie manuell ausgeführt und Ansicht Testausgang.
Zum Beispiel, wenn Sie halten Sie eine spezielle Tastenkombination beim Öffnen der eigenen Software „Systemsteuerung“ , Sie einige erweiterte Einträge erhalten:
Andere Tipps
ein Testcase in das Hauptprojekt Hinzufügen ist nicht der Weg zu gehen. Sie sollten eine separate Testproject (Sie können sie haben in der gleichen Projektgruppe als Hauptprojekt) erstellen, ein Testcase und Lauf hinzufügen.
Ich mag die Idee, einen 'Run DUnit tests'
Befehl in der IDE zu haben.
Es könnte durch Überprüfung für ein DUnit Projekt im selben Ordner implementiert werden, die denselben Namen wie das aktuelle Projekt mit:
- Project1.dpr -> die zu testende Software
- Project1.Tests.dpr => die DUnit Test-App
In diesem Fall sollte die IDE den Run DUnit-Tests Befehl aktivieren.
-
Nachdem die Tests ausgeführt wird, wird eine Liste aller nicht bestandenen Tests angezeigt werden soll, die mit der Source-Leitung zu springen, wo ein Test ist fehlgeschlagen .
-
Wenn die Tests Speicherlecks verursacht, wird eine Liste aller Lecks angezeigt werden soll, die mit der Source-Leitung zu springen, wo der Speicherverlust erstellt wurde
(DUnit konfiguriert werden kann, um Speicherlecks zu erfassen und Tests fehlschlagen, wenn eine gefunden wurde)