【问题标题】:0% code coverage with PHPUnitPHPUnit 0% 的代码覆盖率
【发布时间】:2012-08-04 06:33:30
【问题描述】:

我正在使用 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 日志的 sn-p:

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 档案相关的错误。该问题已报告。

https://github.com/sebastianbergmann/php-code-coverage/issues/107

【问题讨论】:

    标签: php testing phpunit code-coverage xdebug


    【解决方案1】:

    代码覆盖是关于源代码形式的。源代码形式是您对其进行更改的软件的变体。

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

    所以你可能只是想知道,但想知道两次,想想为什么会这样。试着用你自己的话来解释为什么报告 phar 文件的代码覆盖率是没有用的。

    【讨论】:

      猜你喜欢
      • 2014-04-16
      • 1970-01-01
      • 2012-05-04
      • 2018-05-29
      • 2012-01-18
      • 1970-01-01
      • 2012-01-14
      • 2011-05-27
      • 2016-11-11
      相关资源
      最近更新 更多