繁体   English   中英

PHPUnit的代码覆盖率为0%

[英]0% code coverage with PHPUnit

我正在使用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

Codecoverage与源代码形式有关。 源代码形式是您要更改的软件的变体。

phar文件是一个存档。 与Zend Encoder或Ioncube Encoder甚至APC编码的PHP代码类似,代码覆盖率不适用于这些代码,更重要的是:代码覆盖率作为度量标准对这些文件没有任何意义。

因此,您可能只是想知道,但是想知道两次,然后思考为什么会这样。 尝试用自己的话找到一种解释,为什么报告phar文件的代码覆盖率没有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM