Ich habe die folgende Ordnerstruktur:PHP: Nur Dateien beim Ausführen von Phing einschließen?
/main
/loader.php
/build.xml
/components
/package1
/class1.php
/package2
/class2.php
/tests
/package1
/class1.test.php
/package2
/class2.test.php
Wenn ich die Web-Anwendung ausführen ich loader.php
zuerst laden und andere Komponenten von Loader::load('package_name')
aufrufen. Dann sind alle notwendigen Dateien enthalten. Die gute Sache hier ist, dass ich loader.php
innerhalb der Klassendateien nicht einschließen muss, weil ich mich darauf verlassen kann, eine funktionierende Instanz von Loader
zu haben.
Die Unit-Test-Klassen simulieren dieses Verhalten, indem sie alle erforderlichen Klassen explizit einbeziehen. Es gibt also auch kein Problem mit PHP und PHPUnit.
Aber jetzt möchte ich einen Abdeckungsbericht mit Phing und Xdebug generieren. Das Problem hier ist, dass phing anscheinend jede einzelne PHP-Datei lädt, um die Coverage-Datenbank zu erstellen. Leider stoppt es, weil es die Klasse Loader
, die in den PHP-Dateien verwendet wird, nicht finden kann.
Ich könnte leicht eine include
-Anweisung zu jeder Klassendatei hinzufügen, aber ich frage mich, ob es eine Möglichkeit gibt, Dateien nur einzubinden, wenn die Code Coverage-Analyse die Datei prüft?
Andere Idee: Ich könnte auch die Coverage-Analyse so konfigurieren, dass sie das Einheitentestverzeichnis durchsucht und alle notwendigen Includes findet. Dann müsste ich Klassen filtern, die mit einem Muster wie /Test$/i
oder so übereinstimmen. Möglich?