Ошибка «Не удается переопределить класс» при запуске PHPUnit с покрытием кода - PullRequest
2 голосов
/ 24 января 2012

PHPUnit, кажется, работает правильно (соответствующие тесты выполняются и проходят), но во время покрытия кода выдается ошибка. Мы используем PHPUnit 3.5 с ZF 1.11. Любая идея будет принята с благодарностью!

(К вашему сведению: я просмотрел некоторые похожие сообщения в StackOverflow, но, похоже, ничего не решило эту проблему для нас.)

[24-Jan-2012 00:11:09 UTC] PHP Fatal error:  Cannot redeclare class Zend_View_Helper_FormSpecial in /home/za/application/modules/proposal/views/helpers/FormSpecial.php on line 23
[24-Jan-2012 00:11:09 UTC] PHP Stack trace:
[24-Jan-2012 00:11:09 UTC] PHP   1. {main}() /usr/local/zend/bin/phpunit:0
[24-Jan-2012 00:11:09 UTC] PHP   2. PHPUnit_TextUI_Command::main() /usr/local/zend/bin/phpunit:49
[24-Jan-2012 00:11:09 UTC] PHP   3. PHPUnit_TextUI_Command->run() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:129
[24-Jan-2012 00:11:09 UTC] PHP   4. PHPUnit_TextUI_TestRunner->doRun() /usr/local/zend/share/pear/PHPUnit/TextUI/Command.php:188
[24-Jan-2012 00:11:09 UTC] PHP   5. PHP_CodeCoverage_Report_HTML->process() /usr/local/zend/share/pear/PHPUnit/TextUI/TestRunner.php:363
[24-Jan-2012 00:11:09 UTC] PHP   6. PHP_CodeCoverage->getSummary() /usr/local/zend/share/pear/PHP/CodeCoverage/Report/HTML.php:128
[24-Jan-2012 00:11:09 UTC] PHP   7. PHP_CodeCoverage->processUncoveredFilesFromWhitelist() /usr/local/zend/share/pear/PHP/CodeCoverage.php:354

Спасибо!

Chris

1 Ответ

3 голосов
/ 24 января 2012

Ошибка означает, что /home/za/application/modules/proposal/views/helpers/FormSpecial.php объявляет класс с именем Zend_View_Helper_FormSpecial, который уже объявлен некоторым другим модулем - вероятно, .../Zend/View/Helper/FormSpecial.php в Zend Framework.Если вы намеревались заменить Zend FormSpecial своим собственным, вам нужно дать ему другое имя класса.

Проблема в том, что PHP_CodeCoverage загрузит все файлы PHP в белый список, которые еще не были загружены.Если один из этих модулей определяет класс с тем же именем, вы получите эту ошибку.

...