尝试决定哪一种更适合我的情况。根据phpunit文档(非常有限),白名单应该包含目录中的所有文件,但它似乎没有那样工作。有没有人有任何建议或者可以指出我除了phpunit手册之外的一个很好的参考。我正在使用XML配置文件。提前谢谢!
<?xml version="1.0" encoding="utf-8"?>
<phpunit>
<filter>
<whitelist>
<directory suffix=".php">/home/ddohr/git/project/</directory>
<exclude>
<directory suffix=".php">/home/ddohr/git/project/vendor/</directory>
<directory suffix=".php">/home/ddohr/git/project/plugins/</directory>
<directory suffix=".php">/home/ddohr/git/project/test/</directory>
</exclude>
</whitelist>
</filter>
</phpunit>
答案 0 :(得分:1)
更新:以下内容不再适用于PHPUnit 3.6及更高版本。有关新解决方案,请参阅Add files to code-coverage white/blacklists in bootstrap.php
for PHPUnit。
原始答案
至于“白名单与黑名单”问题说明它们是互斥的,白名单胜过黑名单。我们在项目中使用白名单,因为我们希望在没有测试的情况下报告0%的覆盖率。我们的bootstrap.php
模块设置了白名单,因为它似乎比在phpunit.xml
放置bootstrap.php
时更易于管理。
例如,图书馆项目的includeDirectoryForCodeCoverage()
使用includeDirectoryForCodeCoverage(MY_LIBRARY_PATH);
将其来源添加到白名单中:
function includeDirectoryForCodeCoverage($path) {
PHP_CodeCoverage_Filter::getInstance()
->addDirectoryToWhitelist($path);
}
function includeFileForCodeCoverage($path) {
PHP_CodeCoverage_Filter::getInstance()
->addFileToWhitelist($path);
}
function includeFilesForCodeCoverage(array $paths) {
PHP_CodeCoverage_Filter::getInstance()
->addFilesToWhitelist($paths);
}
这是一个简单的帮助器,用于抽象实际调用PHP_CodeCoverage:
function ignoreDirectoryInStackTraces($path) {
PHP_CodeCoverage_Filter::getInstance()
->addDirectoryToBlacklist($path);
}
然而,黑名单仍然很方便。 PHPUnit将隐藏列入黑名单的文件中的任何代码的堆栈跟踪条目。出于这个原因,我添加了这个小宝石:
{{1}}