试图决定哪一个更适合我的情况。根据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>
最佳答案
更新:下面不再适用于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);
这是一个简单的帮助程序,用于抽象对php_codecoverage的实际调用:
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);
}
不过,黑名单还是很方便的。phpunit将隐藏黑名单文件中任何代码的堆栈跟踪项。为此,我加了一个小宝石:
function ignoreDirectoryInStackTraces($path) {
PHP_CodeCoverage_Filter::getInstance()
->addDirectoryToBlacklist($path);
}
关于php - phpunit白名单vs黑名单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5871350/