Gibt es eine Möglichkeit, Komponententests zu schreiben, so dass sie sowohl mit Delphi als auch mit Free Pascal kompiliert und ausgeführt werden können?
Es gibt verschiedene Unit-Test-Frameworks für Delphi und Free Pascal, die für Entwickler, die auf beide Compiler (z. B. Bibliotheks- und Framework-Entwickler) abzielen, doppelte Arbeit verursachen.
Vielleicht gibt es also einen Weg, entweder das DUnit- oder das FPCUnit-Framework zu verwenden und den Testfall-Quellcode (oder das Framework selbst) so zu optimieren, dass er auch mit dem anderen Compiler funktioniert.
Also im Wesentlichen die Frage ist:
oder
Das Standard-Unit-Test-Framework für Free Pascal ist FPCUnit, es hat das gleiche Design wie DUnit, unterscheidet sich aber in kleinen Details davon. Sie können allgemeine Komponententests für FPCUnit und DUnit schreiben, indem Sie die Unterschiede nach {$IFDEF FPC}
umgehen. Ich habe gerade FPCUnit getestet, es ist ein brauchbares Framework und bloggte darüber .
Siehe sehr schönen Blog-Artikel - nur frisches Fleisch über FPCUnit Tests.
Kurz gesagt, soweit ich weiß, und wenn Sie mit DUnit vergleichen :
Also, ich denke, es könnte leicht sein, FPCUnit "imitieren" DUnit, durch Erstellen einer kleinen Wrapper-Klasse über FPCUnit-Implementierung, um die gleichen Methoden als mit DUnit zu haben. Daher können Sie möglicherweise Code zwischen den beiden Zielen austauschen und sogar vorhandene DUnit-Tests erneut verwenden. Eine solche Wrapperklasse ist IMHO viel bequemer als {$ifdef FPC}
, wie hier vorgeschlagen. Bedingte Kompilierung neigt dazu, Code schwer zu debuggen, ausführlich, redundant und sollte nur bei Bedarf verwendet werden.
Eine andere mögliche Lösung könnte die Verwendung anderer Test-Frameworks sein. Unsere kleinen TSynTest-Klassen sind leichter, aber ich bin gerade dabei Konvertieren des Frameworks in FPC. Also könnte derselbe genaue Code mit beiden Compilern verwendet werden. Es hat einige Funktionen (wie optionale Protokollierung mit Feinprofilierung und Vollstackstrace bei Ausfall), die ich von DUnit / FPCUnit vermissen würde. Es hat keine GUI oder einen Wizard, aber ehrlich gesagt, da ich Programmierer bin, bevorzuge ich Klartext, den ich leicht in meine technische Release-Dokumentation aufnehmen kann, um zu bestätigen, dass keine Regression stattgefunden hat.
Tags und Links unit-testing delphi freepascal dunit