我正在使用PHPUnit运行模块测试,并希望获得测试的覆盖率报告。我过去成功地做过这个,但不知怎的,我不能让它再次工作,我不知道为什么它不再工作了。唯一的区别是我现在运行PHP 5.4而不是5.3。
测试使用exec命令在Ant构建文件中运行:
<exec dir="${basedir}" executable="phpunit.bat" failonerror="${test.failonerror}">
<arg value="--log-junit" />
<arg value="${test.phpunit.log}" />
<arg value="--coverage-clover" />
<arg value="${test.phpunit.coverage.log}" />
<arg value="--bootstrap" />
<arg value="${test.phpunit.bootstrap}" />
<arg value="${test.phpunit.testdir}" />
</exec>
以下是运行测试时Ant日志的片段:
module-test-php:
[exec] PHPUnit 3.6.12 by Sebastian Bergmann.
[exec] .............
[exec] Time: 5 seconds, Memory: 8.75Mb
[exec] OK (13 tests, 113 assertions)
[exec] Generating code coverage report in Clover XML format ... done
从日志中可以看出覆盖率报告应该有效,但是当我打开报告时,我得到的就是这个
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1344329670">
<project timestamp="1344329670">
<metrics files="0" loc="0" ncloc="0" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
</project>
</coverage>
我在这里缺少一些设置,或者为什么我的零覆盖率为零?
更新
我做了一些测试,发现了与phar档案有关的bug。这个问题已被报道。
https://github.com/sebastianbergmann/php-code-coverage/issues/107
答案 0 :(得分:0)
Codecoverage是关于源代码形式的。源代码表单是您更改的软件的变体。
phar文件是存档。与Zend Encoder或Ioncube Encoder甚至APC编码的PHP代码类似,代码覆盖率不适用于这些代码覆盖范围,更重要的是:代码覆盖率作为度量标准对这些文件没有任何意义。
所以你可能只是想知道,但是想知道为什么会这样。试着用你自己的话来解释为什么报告phar文件的代码覆盖是没有用的。