【问题标题】:PHP Code Coverage of early exit in Generators with PHPUnit and XDebug使用 PHPUnit 和 XDebug 在生成器中提前退出的 PHP 代码覆盖率
【发布时间】:2016-01-22 00:43:05
【问题描述】:

我不确定这是否是一个错误,但我似乎无法通过在 PHP 5.5 生成器中提前退出来获得 100% 的覆盖率。

例如:

<?php

function gen($branch = false)
{
    yield;

    if($branch) {
        echo 'branched';
        return;
    } // This line is never covered.
    echo 'did not branch';

}

if 语句的右括号永远不会被覆盖。它不被视为“死代码”,它的行为就像您没有考虑退出 if 语句的可能性一样。

我不想使用else,因为正如 phpmd 所说,“永远不需要其他”,但我希望获得 100% 的覆盖率(因为这样可以很容易地查看我是否错过了新代码中的某些内容,无需深入研究)。

还有其他人遇到过这种情况吗?有解决办法吗?

【问题讨论】:

  • 右括号总是被认为是死代码。我相信这是 PHP_CodeCoverage 和 XDebug 结合使用的错误。 This guy 似乎在降级 PHP_CodeCoverage 方面取得了成功。
  • 另外,请注意,请记住100 % code coverage !== fully tested code,因此覆盖率不应是测试成功的唯一标准。
  • 在这种情况下,代码被认为是“未被发现的”而不是“死的”。目前使用phpunit/php-code-coverage @ 2.2.4,它似乎是特定于生成器的,所以我认为这不是同一个问题。我向php-code-coverageXdebug 报告了这个问题。希望他们能够解决这个问题。 :)
  • fixecd,我认为关闭bugs.xdebug.org/view.php?id=1192#c3196 是安全的:-P

标签: php phpunit generator code-coverage xdebug


【解决方案1】:

这是一个bug in Xdebug,已在version 2.4.0 中解决

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多