Ich versuche derzeit, den Code-Coverage-Bericht für eine PHP-Anwendung zu erhalten, die auf dem Yi-Framework basiert.
Die Codeabdeckung wird von PHPUnit 3.6 generiert, und ich verwende < a href="http://www.phpunit.de/manual/3.6/de/code-coverage-analysis.html#code-coverage-analysis.inclusioning-exclusive-files"> Whitelist-Ansatz für Quelldateien Filterung.
Problem ist, wenn ich die Option addUncoveredFilesFromWhitelist="true"
, Code Coverage bricht mit dem folgenden Fehler:
(Es ist interessant, warum es drei fast identische Fehler gibt, anstatt nur eines.) Wenn addUncoveredFilesFromWhitelist="false"
code coverage erfolgreich generiert wird, aber natürlich ohne die Dateien, die nicht durch Tests abgedeckt sind.
Dateien des Yii-Frameworks, die im Verzeichnis $HOME/systems/yii/
abgelegt sind.
Anwendung Ich versuche zu decken in der $HOME/projects/$APPNAME/
.
Hier ist mein phpunit.xml
:
Ich habe alle Tests im Verzeichnis protected/tests
im Katalog der Anwendung abgelegt, wie in Testumgebung einrichten im endgültigen Handbuch zu Yii.
PHPUnit wird wie folgt aufgerufen:
%Vor%Das Komponententesten selbst läuft reibungslos, nur die Codeabdeckung bricht ab.
Vielleicht sollte ich die Exlude-Liste einrichten, um Verzeichnisse mit Yii-Klassen auszuschließen, aber ich habe etwas Angst vor dieser Erfahrung, denn es gibt Dutzende von Ordnern, Yii ist ein hochmodulares System. Natürlich, wenn es eine einzige Lösung ist ...
EDIT: Also, für die Neugier, sieht die vollständige Lösung so aus:
phpunit.xml
%Vor%Ersetzen Sie einfach den YIIPATH-Platzhalter durch den echten Pfad zum Yii-Framework.
Es definitiv hat etwas mit CButtonColumn
zu tun, aber im Moment benutze ich nur diesen Hack mit includePath
und freue mich darüber. Das Entfernen des Hacks bringt diesen ganzen Bug zum Leben.
Warum das passiert:
PHPUnit wird require
/ include
alle Dateien in der white-listed , wenn Sie es sagen,% code%.
Wenn diese Dateien ausführbaren Code enthalten, wird dieser ausgeführt und Sie sehen die Ergebnisse der auftretenden Probleme.
Es ist ein wenig Ärger, aber es funktioniert
Ich habe keine Ahnung, WARUM diese Fehler auftreten, aber es scheint ein Problem mit dem Include-Pfad zu sein? Der Rahmen sollte eine Lösung bieten, die ich sagen würde.
Der Weiß- und Code-Coverage-Bericht sollte nur die Dateien enthalten, die Sie testen. Angenommen, Sie schreiben keine Tests für das Yii-Framework selbst, entfernen Sie es aus dem Weiß. Dies wird hoffentlich nicht nur das Problem lösen, sondern der Bericht wird viel schneller erstellen.
Tags und Links php code-coverage phpunit yii