Home » Tutorials » Tools » Unit-Tests mit DUnit

Unit-Tests mit DUnit

Neues Projekt beginnen

Um ein Programm testen zu können, muss man erst einmal ein Programm haben. Wir werden deshalb jetzt ein kleines Programm basteln, das nicht viel tut und relativ einfach gehalten ist.
Das Hauptfenster der VCL-Anwendung sollte in etwa so aussehen:


Außer der Unit zum Hauptfenster legen wir eine zweite, separate Unit mit folgendem Inhalt an:

unit DemoClass;

interface

type
  TTestrecord = record
    Text: String;
    Number: Integer;
  end;

TDemoClass = class(TObject)
  private
    MyRecord: TTestrecord;
  public
    a, b: Integer;
    constructor Create(Zahl1, Zahl2:integer; Text: String);
    function Add (a, b: Integer): Integer;
    function GetData(): TTestrecord;
  end;

implementation

{ TDemoClass }

function TDemoClass.Add(a, b: Integer): Integer;
begin
  result := a + b;
end;

constructor TDemoClass.Create(Zahl1, Zahl2: integer; Text: String);
begin
  a := Zahl1;
  b := Zahl2;
  MyRecord.Text := Text;
  MyRecord.Number := Add(a, b);
end;

function TDemoClass.GetData: TTestrecord;
begin
  result := MyRecord;
end;

end. 

Kurze Erklärung dazu:
Die Klasse enthält einen privaten Record. Dieser ermöglicht es, dass eine Methode (im Beispiel GetData) mehrere Werte auf einmal – verpackt im Record – zurückgeben kann.
Eine Instanz der Klasse wird über den Konstruktor mit zwei Integer-Zahlen und einem String erzeugt. Im Konstruktor wird die Methode Add aufgerufen, die die beiden Zahlen addiert. Das Ergebnis sowie der Text werden im Record abgelegt. Die ursprünglichen Zahlen sind über die Felder a und b zugreifbar.
Nun müssen wir noch die Ereignisbehandlungsroutine des Buttons implementieren. Dieser Code kommt in die Unit des Fensters:

uses DemoClass;

procedure TForm1.Button1Click(Sender: TObject);
var
  Testobjekt: TDemoClass;
  Testrecord: TTestRecord;
begin
  Testobjekt := TDemoClass.Create(3, 5, 'IchBinText');
  try
    Testrecord := Testobjekt.GetData;
    Label2.Caption := Testrecord.Text;
    Label4.Caption := IntToStr(Testrecord.Number);
  finally
    Testobjekt.Free;
  end;
end;

Hier wird, sobald man auf den Button klickt, ein Objekt der Klasse TDemoClass erzeugt. Durch den Konstruktor mit drei Parametern (zwei Integer: 3 und 5 und einen String: ‚IchBinText‘) kommen die Werte in das Objekt. Danach wird die Methode GetData aufgerufen. Dadurch steht der Record in Form1 zur Verfügung. Nun werden noch die Integer-Werte und der String auf den Labels dargestellt. Und das Ganze sieht dann so aus: