Open Component Test Framework (OpenCTF)
Ein open source Projekt zur automatischen Erstellung von Tests für alle Komponenten in VCL Formularen, Frames und Datenmodulen für Delphi 2009 und neuer.
OpenCTF kann bei großen Projekten, in denen viele
VCL Komponenten eingesetzt werden, durch regelmäßige Tests eine sehr große Zeiteinsparung erreichen.
Es erfordert kein Scripting der Tests, sondern verwendet (erweiterbare) Regeln, die einmal definiert und auf alle passenden Komponenten angewandt werden. OpenCTF nutzt das DUnit Framework als Basis.
Projekt bei Sourceforge (mit Screenshot):
https://sourceforge.net/projects/openctf/
Screenshots:
https://sourceforge.net/projects/openctf/#screenshots
API Dokumentation:
http://openctf.sourceforge.net/
Getting Started - Englisch:
http://www.habarisoft.com/download/O...ingStarted.pdf
Einstieg - Deutsch:
http://www.habarisoft.com/download/E...gInOpenCTF.pdf
Wie arbeitet OpenCTF?
OpenCTF kennt nach der Initialisierung im Prinzip nur zwei einfache Dinge (zwei Objektlisten):
* die Liste der zu untersuchenden Formulare
* die Liste der durchzuführenden Tests
OpenCTF durchläuft nacheinander alle Komponenten der angegebenen Formulare, und prüft dabei, ob für die Klasse der Komponente (oder eine Vorfahrklasse) ein Test hinterlegt ist. Falls die Komponente diesen 'Aufnahmetest' besteht, wird dynamisch ein Testfall für das DUnit-Framework erzeugt und der Testsuite hinzugefügt. (Jeder Testfall enthält auch eine Objektreferenz auf die von ihm zu testende Komponente.)
Nachdem alle Testfälle feststehen, kann mit der DUnit-Standardmethode 'RunRegisteredTests' der eigentliche Testlauf gestartet werden. Da jeder Testfall die von ihm zu testende Komponente bereits 'kennt', ist in dieser Phase keine besondere Leistung des OpenCTF mehr erforderlich.
OpenCTF erleichtert die Testerstellung aber auch durch Methoden, die ein Testprojekt mit wenig Zeilen Code ermöglichen. Beispiel:
Delphi-Quellcode:
program Project1;
uses
OpenCTF, OpenCTFRunner,
// die Basis des Frameworks
ctfTestDB,
// eine Sammlung von Tests für DB - Komponenten
TestDataModule
in '
TestDataModule.pas'
{DataModule1: TDataModule},
TestDataModule2
in '
TestDataModule2.pas'
{DataModule2: TDataModule},
TestForm
in '
TestForm.pas'
{Form1},
TestForm2
in '
TestForm2.pas'
{Form2};
begin
// Register Form classes
OpenCTF.RegisterFormClasses([TDataModule1, TDataModule2, TForm1, TForm2]);
// run the tests
OpenCTFRunner.Run;
end.
Eine neue Version (1.5.0) ist aktuell in Entwicklung und bereits im Subversion Repository verfügbar (im Bereich branches).
Highlights:
* komplett neues, flexibleres Basisframework
* Testergebnisse werden "verdichtet" (weniger Zweige im DUnit
GUI Testrunner), um die DUnit Darstellung bei großen Projekten übersichtlicher zu machen
* Tests können wahlweise nach Forms oder nach Testklassen gruppiert werden, Teil-Testläufe werden dadurch flexibler und schneller