PHPUnit's whitelist and blacklist seem to be ignored

匿名 (未验证) 提交于 2019-12-03 01:33:01

问题:

I am setting up PHPUnit on a project which is structured the following way :

- 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 

I created the following PHPUnit configuration file, which is located at the root of the project :

<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> 

I want to use a whitelist in order PHPUnit not to test out-of-project PHP files, such as those in the vendor directory... But looking at the code coverage report, it seems that the whitelist is not taken into account :

As seen on the capture the tests and vendor are written to be 0% covered, although they are not supposed to be analyzed as they don't belong to the whitelist. The '2% files' of the src directory corresponds to the only test that I have written, so the code coverage seems to be correct for this one.

How can I make the src/service really be the only directory to be analyzed to calculate the code coverage ?

I use PHP 5.4.3 and PHPUnit 4.4.5.

回答1:

Problem solved. The fact that I don't use the processUncoveredFilesFromWhitelist parameter implies that except if I explicitly put directories in the whitelist they won't be coverage-analyzed. So in my case a blacklist seems to be useless since only items in the whitelist are taken into account ; and if I want to exclude subdirectories of this whitelist I can use the tag.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!