使用代码覆盖率运行PHPUnit时“无法重新声明类”错误

时间:2012-01-24 00:17:59

标签: php zend-framework phpunit code-coverage php-5.3

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

谢谢!

克里斯

1 个答案:

答案 0 :(得分:3)

该错误意味着/home/za/application/modules/proposal/views/helpers/FormSpecial.php声明了一个名为Zend_View_Helper_FormSpecial的类,该类已由其他模块声明 - 可能是Zend Framework中的.../Zend/View/Helper/FormSpecial.php。如果您打算将Zend的FormSpecial替换为您自己的,则需要为其指定一个不同的类名。

问题是PHP_CodeCoverage将加载尚未加载的白名单中的每个PHP文件。如果其中一个模块定义了一个具有相同名称的类,则会出现此错误。