【问题标题】:Why won't PHPUnit code coverage report functions that aren't called?为什么 PHPUnit 代码覆盖率不会报告未被调用的函数?
【发布时间】:2017-03-04 04:40:56
【问题描述】:

我正在尝试获取我的一个项目的代码覆盖率,但未被调用的函数和类不会影响覆盖率计算。当大量代码被忽略时,很难看到尚未涵盖的内容(很多)。

在下图中,我希望前三个函数的主体以红色突出显示。至少在执行的函数中未执行的行显示为红色。

不管怎样,我正在使用 apt 安装的 PHP 7.0.12-1 和 XDebug 2.4.1-1 运行 Debian 测试,并使用 Composer 安装的 PHPUnit 4.8.27。

【问题讨论】:

  • 有趣的是,从我的 phpunit.xml 中删除 processUncoveredFilesFromWhitelist="true" 似乎使它变得更好,尽管并非完全如此。我现在让大多数功能显示为红色并计入我的覆盖范围。但是……并非所有人都这样做。还有一些根本没有标记。我不确定模式是什么,但我至少现在有所了解。
  • this question 看来,设置选项应该会导致更准确的报告,因为它计算它而不是使用启发式。
  • 我刚刚问了一些相关的或类似的问题。这个问题仍然基于xdebug错误吗? stackoverflow.com/questions/46133501/…

标签: php code-coverage xdebug


【解决方案1】:

代码覆盖率报告应在其计算中包含所有代码,而不仅仅是着色的内容。您确定未突出显示的代码被排除在外吗?未突出显示的代码只是没有测试的代码,红色突出显示的是已测试代码但尚未测试的方法中的代码位(如仅测试条件的一侧的条件语句)

【讨论】:

  • 未突出显示的函数不计算在内。对于没有突出显示功能的类,这会导致计数为 0/0,并且该类被标记为 100% 覆盖。
【解决方案2】:

这似乎是 XDebug 和 PHP 7.0 的一个持续错误,如本期所述:https://github.com/sebastianbergmann/php-code-coverage/issues/411 所以,它应该可以按我的预期工作,并且我的设置没有任何错误。我猜我只需要等到根本原因(在 XDebug 中)被找到并修复。在此之前,该线程指出打开进程隔离是一种解决方法。

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 2014-04-16
    • 2023-03-14
    • 2014-03-21
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    相关资源
    最近更新 更多