PHPUnit代码覆盖率怎么能忽略我的自动加载器呢


How can PHPUnit code coverage ignore my autoloader?

我的phpunit配置中有一个运行Zend'Loader'StandardAutoloader.php的引导程序。当我添加时,我可以获得PHPUnit代码覆盖率以忽略它

<filter>
   <blacklist>
       <directory suffix=".php">/absolute/path/to/zf</directory>
   </blacklist>
</filter>

到PHPUnit配置XML文件。但我必须指定一条绝对路径。我希望它是一个相对路径,但PHPUnit并没有忽略代码覆盖范围中的Zend文件夹。当我在家工作时,我不想添加不同的位置,我也不希望其他开发人员添加自己的路径。Zend框架位于php.ini include_path设置中,但这不起作用:

<filter>
   <blacklist>
       <directory suffix=".php">./Zend</directory>
   </blacklist>
</filter>

有什么建议吗?

您可以使用<filter><whitelist>:中的<exclude>...</exclude>指令从代码覆盖范围中排除路径

<filter>
    <whitelist>
        <directory suffix=".php">../src/library/</directory>
        <!-- add more directories -->
        <exclude>
            <directory suffix=".phtml">./src/application/</directory>
            <directory suffix=".php">./Zend/</directory>
            <!-- add more directories with relative or absolute path -->
        </exclude>
    </whitelist>
</filter>    

实际上,这也可以通过黑名单来实现。路径需要相对于测试目录。

这在我的项目中起到了作用:

<filter>
    <blacklist>
        <directory suffix=".php">../../../cache</directory>
    </blacklist>
</filter>