PHPUnit的白名单和黑名单似乎被忽略了
PHPUnit's whitelist and blacklist seem to be ignored
我正在一个项目上设置 PHP单元,其结构如下:
- build
- src
- service # PHP source code files here
- tests
- php
- unit # PHP unit tests here
- bootstrap.php # PHP unit tests here
- services
- MyTest.php
- ...
- vendor
我创建了以下PHP单元配置文件,它位于项目的根目录下:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.4/phpunit.xsd"
bootstrap="tests/php/unit/bootstrap.php"
verbose="true">
<testsuites>
<testsuite name="services">
<directory>tests/php/unit/services</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>src/service</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="build/php/coverage"/>
<log type="coverage-clover" target="build/php/coverage.xml"/>
<log type="junit" target="build/php/test-results.xml"/>
</logging>
</phpunit>
我想使用白名单 PHPUnit 不测试项目外的 PHP 文件,例如 vendor
目录中的文件...但是寻找在代码覆盖率报告中,似乎没有考虑到白名单:
正如在捕获中看到的那样,tests
和 vendor
被写入 0% 覆盖,尽管它们不应该被分析,因为它们不属于白名单。 src
目录的“2% 文件”对应于我编写的唯一测试,因此代码覆盖率对于这个测试似乎是正确的。
如何使 src/service
真正成为计算代码覆盖率的唯一分析目录?
我使用 PHP 5.4.3 和 PHPUnit 4.4.5.
问题已解决。我不使用 processUncoveredFilesFromWhitelist 参数这一事实意味着除非我明确地将目录放入白名单,否则它们将不会被覆盖分析。所以在我的例子中,黑名单似乎是无用的,因为只考虑了白名单中的项目;如果我想排除这个白名单的子目录,我可以使用标签。
我正在一个项目上设置 PHP单元,其结构如下:
- build
- src
- service # PHP source code files here
- tests
- php
- unit # PHP unit tests here
- bootstrap.php # PHP unit tests here
- services
- MyTest.php
- ...
- vendor
我创建了以下PHP单元配置文件,它位于项目的根目录下:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.4/phpunit.xsd"
bootstrap="tests/php/unit/bootstrap.php"
verbose="true">
<testsuites>
<testsuite name="services">
<directory>tests/php/unit/services</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>src/service</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="build/php/coverage"/>
<log type="coverage-clover" target="build/php/coverage.xml"/>
<log type="junit" target="build/php/test-results.xml"/>
</logging>
</phpunit>
我想使用白名单 PHPUnit 不测试项目外的 PHP 文件,例如 vendor
目录中的文件...但是寻找在代码覆盖率报告中,似乎没有考虑到白名单:
正如在捕获中看到的那样,tests
和 vendor
被写入 0% 覆盖,尽管它们不应该被分析,因为它们不属于白名单。 src
目录的“2% 文件”对应于我编写的唯一测试,因此代码覆盖率对于这个测试似乎是正确的。
如何使 src/service
真正成为计算代码覆盖率的唯一分析目录?
我使用 PHP 5.4.3 和 PHPUnit 4.4.5.
问题已解决。我不使用 processUncoveredFilesFromWhitelist 参数这一事实意味着除非我明确地将目录放入白名单,否则它们将不会被覆盖分析。所以在我的例子中,黑名单似乎是无用的,因为只考虑了白名单中的项目;如果我想排除这个白名单的子目录,我可以使用标签。