我在PHPunit和zend框架中遇到了代码覆盖率报告的问题。每当我运行phpunit测试时,代码覆盖率都无法返回以下消息:
PHPUnit 3.4.15 by Sebastian Bergmann.
I.......III.I................................IIIIIIIIIIIIIII 60 / 93
IIII....I....I..II..II.....IIIIII
Time: 4 seconds, Memory: 22.25Mb
OK, but incomplete or skipped tests!
Tests: 93, Assertions: 174, Incomplete: 36.
Generating code coverage report, this may take a moment.PHP Fatal error: Cannot redeclare class Klunde_Auth in /Users/kristianlunde/workspaces/private/klunde/Library/Klunde/Auth.php on line 9
Fatal error: Cannot redeclare class Klunde_Auth in /Users/kristianlunde/workspaces/private/klunde/Library/Klunde/Auth.php on line 9
我的phpunit.xml文件如下所示:
<phpunit bootstrap="./application/bootstrap.php" colors="true">
<testsuite name="Klunde">
<directory>./application/</directory>
<directory>./Library/Klunde</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application</directory>
<directory suffix=".php">../Library/Klunde</directory>
<exclude>
<directory suffix=".phtml">../application/</directory>
<file>../application/Bootstrap.php</file>
<file>../application/controllers/ErrorController.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/report" charset="UTF-8" yui="true"
highlight="true" lowUpperBound="50" highLowerBound="80" />
<log type="testdox-html" target="./log/testdox.html" />
</logging>
</phpunit>
我做了
var_dump(get_included_files());
位于Auth文件的顶部,它确实尝试在失败之前多次包含该文件。
我还尝试删除Klunde_Auth.php文件只是为了查看它是否是一个文件问题,但是在Library / Klunde目录中的下一个文件上触发了错误。
我正在运行OSX Snow Leopard,PHP 5.3.1,XDebug 2.1.0beta3和PHPUnit 3.4.15
所有帮助和帮助将受到高度赞赏。
感谢。
答案 0 :(得分:2)
在类声明本身开始之前,在Klunde_Auth.php的顶部添加debug_print_backtrace()调用。
然后再次运行测试套件,现在每次包含文件时都会看到整个回溯,这应该可以帮助你弄清楚它被包含两次的位置。