Frage

Ich habe mehrere kleine Funktionen in einer alten Einheit namens namens Utils.pas.

Jetzt würde ich gerne einige von ihnen neu gestalten, aber ich denke, es ist besser, zuvor Tests zu schreiben. Mit Dunit finde ich es ohne eine Klasse unmöglich.

Ich möchte also wissen, wie ich sie vor dem Wiederaufbau testen kann?

Bearbeiten:

Ich fand es unmöglich, weil ich versuchte, einen Testfall in Delphi mit dem Testfall -Assistenten hinzuzufügen. Sehen Sie das Bild unten, dass es keine Klassen und Methoden gibt, sodass ich es nicht erstellen kann.

enter image description here

War es hilfreich?

Lösung

Sie können eine eigenständige Funktion mit dem Assistenten nicht testen, aber es ist kein Problem, eine eigenständige Funktion mit Dunit zu testen.

Beispiel

  //***** A Standalone function te be tested in a unit far, far away
  function Add(v1, v2: Integer): Integer;
  ...

  //***** A testclass to contain the testmethods calling our 
  //      standalone function     
  TTestAdd = class(TTestcase)
  published
    procedure AddingComplement_ShouldEqualZero;
    procedure AddingNegativeNumbers_ShouldBeLessThanZero
    ...
  end;

  implementation

  procedure TTestAdd.AddingComplement_ShouldEqualZero;
  begin
    // Setup, Execute & Verify
    CheckEquals(0, Utils.Add(-1, 1), 'Complement doesn''t add to zero');
  end;

  procedure TTestAdd.AddingNegativeNumbers_ShouldBeLessThanZero
  begin
    // Setup, Execute & Verify
    CheckEquals(-3, Utils.Add(-1, -2), 'Add doesn''t add');
  end;

Andere Tipps

Afaict, Dunit erfordert keinen getesteten Code, um als Klassenmethoden zu existieren. Nur die Testfälle selbst müssen Klassen sein.

BEARBEITEN: Der Assistent ist nur eine Bequemlichkeit. Sie müssen es nicht benutzen.

Real Code muss beibehalten werden. Real Code hat Annahmen, die nicht gut dokumentiert sind. Der echte Code wird von Menschen geändert, die diese Annahmen vergessen oder nie kannten. Vertrauen Sie den Tests, vertrauen Sie dem Code nicht.

Mit Real TDD können Sie vor der Implementierung das Objekt und seine Methoden erstellen. Sie benötigen ein klares Modell, bevor Sie sowieso einen Testfall schreiben können.

Generieren Sie also die Objekte, fügen Sie die Methoden, Parameter usw. hinzu, die wahrscheinlich am besten verwendet werden, dann schreiben Sie die Testfälle für diese und implementieren Sie dann die Objekte. Danach führen Sie den Profiler aus und finden Sie heraus, wie schrecklich Ihr Code wirklich ist, und Refactor.

Als allgemeine Lösung ist es fast immer am besten, ein Werksobjekt zu schreiben, um Ihre Objekte zu instanziieren und zu initialisieren. Je näher Sie der Kernfunktionalität kommen, desto mehr wird dies wichtig.

Schreiben Sie Tests für Ihre erwarteten Fehler und Ausnahmen. Verwenden Sie einen Scheck, um sicherzustellen.

Schreiben Sie schließlich jeden Test und schauen Sie ihn an, bevor Sie den Code schreiben, damit er erfolgreich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top