Starten eines Projekts mit Zend Framework 1.10 und Doctrine 2 (Beta1). Ich verwende Namespaces in meinem eigenen Bibliothekscode.
Beim Generieren von Codeabdeckungsberichten erhalte ich einen schwerwiegenden Fehler beim erneuten Deklarieren einer Klasse. Um weitere Informationen bereitzustellen, habe ich den xdebug_disable()-Aufruf in meiner ausführbaren phpunit-Datei auskommentiert, damit Sie den Funktionstrace sehen können (deaktivierte lokale Variablenausgabe, weil zu viel Ausgabe vorhanden war).
Hier ist meine Terminalausgabe:
$ phpunit PHPUnit 3.4.12 by Sebastian Bergmann. ........ Time: 4 seconds, Memory: 16.50Mb OK (8 tests, 14 assertions) Generating code coverage report, this may take a moment.PHP Fatal error: Cannot redeclare class Cob\Application\Resource\HelperBroker in /Users/Cobby/Sites/project/trunk/code/library/Cob/Application/Resource/HelperBroker.php on line 93 PHP Stack trace: PHP 1. {main}() /usr/local/zend/bin/phpunit:0 PHP 2. PHPUnit_TextUI_Command::main() /usr/local/zend/bin/phpunit:54 PHP 3. PHPUnit_TextUI_Command->run() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:146 PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:213 PHP 5. PHPUnit_Util_Report::render() /usr/local/zend/share/pear/PHPUnit/TextUI/TestRunner.php:478 PHP 6. PHPUnit_Framework_TestResult->getCodeCoverageInformation() /usr/local/zend/share/pear/PHPUnit/Util/Report.php:97 PHP 7. PHPUnit_Util_Filter::getFilteredCodeCoverage() /usr/local/zend/share/pear/PHPUnit/Framework/TestResult.php:623 Fatal error: Cannot redeclare class Cob\Application\Resource\HelperBroker in /Users/Cobby/Sites/project/trunk/code/library/Cob/Application/Resource/HelperBroker.php on line 93 Call Stack: 0.0004 322888 1. {main}() /usr/local/zend/bin/phpunit:0 0.0816 4114628 2. PHPUnit_TextUI_Command::main() /usr/local/zend/bin/phpunit:54 0.0817 4114964 3. PHPUnit_TextUI_Command->run() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:146 0.1151 5435528 4. PHPUnit_TextUI_TestRunner->doRun() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:213 4.2931 16690760 5. PHPUnit_Util_Report::render() /usr/local/zend/share/pear/PHPUnit/TextUI/TestRunner.php:478 4.2931 16691120 6. PHPUnit_Framework_TestResult->getCodeCoverageInformation() /usr/local/zend/share/pear/PHPUnit/Util/Report.php:97 4.2931 16691148 7. PHPUnit_Util_Filter::getFilteredCodeCoverage() /usr/local/zend/share/pear/PHPUnit/Framework/TestResult.php:623
(Ich habe keine Ahnung, warum der Fehler zweimal angezeigt wird …?)
Und hier ist meine phpunit.xml:
<phpunit bootstrap="./code/tests/application/bootstrap.php" colors="true">
<!-- bootstrap.php changes directory to trunk/code/tests,
all paths below are relative to this directory. -->
<testsuite name="My Promotions">
<directory>./</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application</directory>
<directory suffix=".php">../library/Cob</directory>
<exclude>
<!-- By adding the below line I can remove the error -->
<file>../library/Cob/Application/Resource/HelperBroker.php</file>
<directory suffix=".phtml">../application</directory>
<directory suffix=".php">../application/doctrine</directory>
<file>../application/Bootstrap.php</file>
<directory suffix=".php">../library/Cob/Tools</directory>
</exclude>
</whitelist>
</filter>
<logging>
<log type="junit" target="../../build/reports/tests/report.xml" />
<log type="coverage-html" target="../../build/reports/coverage" charset="UTF-8"
yui="true" highlight="true" lowUpperBound="50" highLowerBound="80" />
</logging>
</phpunit>
Ich habe ein Tag in das hinzugefügt, das dieses Problem zu verbergen scheint. Ich habe eine andere Anwendungsressource, aber es scheint kein Problem zu geben (die andere ist eine Doctrine 2-Ressource). Ich bin mir nicht sicher, warum es spezifisch für diese Klasse ist, meine gesamte Bibliothek wird automatisch geladen, sodass es nirgendwo irgendwelche include/require-Aufrufe gibt. Ich denke, es sollte angemerkt werden, dass HelperBroker die erste Datei im Dateisystem ist, die von library/Cob stammt
Ich verwende Snow Leopard mit den neuesten/neuesten Versionen aller Software (Zend Server, Zend Framework, Doctrine 2 Beta1, Phing, PHPUnit, PEAR).
Beim Bearbeiten von pear/PHPUnit/Framework/TestResult.php, um enthaltene Dateien zu kopieren, scheint es aus irgendeinem Grund, dass die fragliche Datei Helperbroker.php und nicht HelperBroker.php enthält! (Die Datei ist tatsächlich HelperBroker.php), weshalb die include_once-Anweisung in TestResult.php immer noch versuchte, die Datei zu laden. Alle anderen Dateien, die enthalten sind, haben die richtige Groß- und Kleinschreibung. Ich werde jetzt untersuchen, warum bei der Datei die Groß-/Kleinschreibung nicht beachtet wird
– Cobby
12. Mai 2010 um 6:09 Uhr
Es scheint, dass die Standard-Namenskonvention für Zend Framework-Plugins (die Zend_Application-Ressourcen enthalten) ucfirst() ist und nicht camelCase wie normale Bibliotheksdateien. Das Umbenennen der Datei in Helperbroker.php behebt das Problem.
– Cobby
12. Mai 2010 um 6:34 Uhr
Schreibe deine Antwort als Antwort und akzeptiere sie, so hat die Frage hier einen Platz und kann auch anderen helfen!
– Markus
12. November 2011 um 16:01 Uhr
@alexander-v-ilyin Was erwarten Sie von der Antwort, die für das Kopfgeld gilt? Op scheint sein Problem einigermaßen gelöst zu haben, aber man könnte eine allgemeine Antwort schreiben, wie man diesen Fehler beseitigt, oder so. Wie sind die Antworten veraltet und was ist das aktuelle Problem 🙂
– edorisch
22. November 2011 um 20:53 Uhr