Phpunit 覆盖范围 : what is the difference between 'addUncoveredFilesFromWhitelist' and 'processUncoveredFilesFromWhitelist' options?

标签 php phpunit

我正在尝试为特定目录的 phpunit 设置代码覆盖率。谁能告诉我:

<filter>
    <whitelist>
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>

<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>

目前前两个选项可以使用(覆盖率不同)但第三个选项将失败并出现类似于 How to add uncovered files to PHPUnit code coverage report of the Yii application 的错误.

刚开始使用 phpunit,想了解这些白名单选项之间的区别。我阅读了有关此的官方文档,但不确定我是否理解。

最佳答案

快速浏览php-code-coverage 的源代码GitHub上的包揭示了真相:

  • 如果 addUncoveredFilesFromWhitelistFALSE然后代码覆盖率包含有关已加载和执行的文件的信息(仅包含包含代码的行);
    在这种情况下,processUncoveredFilesFromWhitelist 的值会被忽略;
  • 如果 addUncoveredFilesFromWhitelistTRUE那么白名单中未加载和执行的文件也将包含在代码覆盖范围内:
    • 如果 processUncoveredFilesFromWhitelistFALSE然后文件不会以任何方式处理;它们的所有行都将出现在代码覆盖范围内,即使是空行和仅包含注释的行也是如此;这是完成工作的快速而肮脏的方式;
    • 如果 processUncoveredFilesFromWhitelistTRUE然后包含文件并使用 XDebug 的代码覆盖功能(与实际运行的文件相同)仅将包含代码的行放入报告中;这是缓慢而努力的方式。

addUncoveredFilesFromWhitelist 的默认值为 TRUEprocessUncoveredFilesFromWhitelist 的默认值为 FALSE。这意味着白名单中未被覆盖的文件(因为它们没有运行)使用快速方式包含在报告中,并且它们的覆盖率报告虽然准确 (0%) 是使用计算的总行数略大于实际行数。

但是,由于 0 仍然是 0%,它认为这是在报告中包含未发现文件的最佳方式。

关于Phpunit 覆盖范围 : what is the difference between 'addUncoveredFilesFromWhitelist' and 'processUncoveredFilesFromWhitelist' options?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041254/

相关文章:

php - 如何在 CodeIgniter 中获取当前 View 名称?

PHP Impact_rows 返回负数 1 (-1)

php - 多个测试在 phing 中发生冲突

unit-testing - 使用 PDO Sqlite 内存数据库进行 PHPUnit 测试

php - 如何测试由对 php 的多个 ajax 请求创建的竞争条件?

php - 如何停止尝试为已映射到实体的 View 创建表的学说?

php - 保存 html 并登录数据库

使用oop的PHP表单提交

PHP 单元 - 未找到类 'PHPUnit_Framework_TestCase'

phpunit - 测试新模型时未找到 Eloquent 类