Я настраиваю PHPUnit для проекта, который структурирован следующим образом:
- 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
Я создал следующий файл конфигурации PHPUnit, который находится в корне проекта:
<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%, хотя они не должны анализироваться, поскольку они не принадлежат к белому списку. «2% файлов» src
Этот каталог соответствует единственному тесту, который я написал, поэтому охват кода кажется правильным для этого.
Как я могу сделать src/service
действительно быть единственным каталогом, который нужно проанализировать для расчета покрытия кода?
Я использую PHP 5.4.3 и PHPUnit 4.4.5.
Задача решена. Тот факт, что я не использую параметр processUncoveredFilesFromWhitelist, подразумевает, что, за исключением случаев, когда я явно помещаю каталоги в белый список, они не будут анализироваться на предмет покрытия. Так что в моем случае черный список кажется бесполезным, так как учитываются только элементы в белом списке; и если я хочу исключить подкаталоги из этого белого списка, я могу использовать тег.
Других решений пока нет …