Обновление: Нижеследующее больше не работает с PHPUnit 3.6 и выше.См. Добавление файлов в белые / черные списки с кодовым покрытием в bootstrap.php
для 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);
}