【问题标题】:"Cannot redeclare class" error when running PHPUnit with Code Coverage使用代码覆盖率运行 PHPUnit 时出现“无法重新声明类”错误
【发布时间】:2012-01-24 00:17:58
【问题描述】:

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

谢谢!

克里斯

【问题讨论】:

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


    【解决方案1】:

    错误意味着/home/za/application/modules/proposal/views/helpers/FormSpecial.php 正在声明一个名为Zend_View_Helper_FormSpecial 的类,该类已由其他模块声明——可能是Zend 框架中的.../Zend/View/Helper/FormSpecial.php。如果你打算用你自己的替换 Zend 的 FormSpecial,你需要给它一个不同的类名。

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

    【讨论】:

    • 谢谢,大卫。我刚刚向罪犯发送了一封严厉的电子邮件。 ;)
    猜你喜欢
    • 2011-02-18
    • 2018-05-29
    • 2012-05-04
    • 2018-03-10
    • 1970-01-01
    • 2013-09-20
    • 2021-12-31
    • 2012-04-08
    • 2016-01-20
    相关资源
    最近更新 更多