phpunit clover 来自某些特定目录,而不是完整的 clover。是否可以?

发布于 2024-09-16 08:12:11 字数 280 浏览 7 评论 0 原文

为什么我需要这个?我正在 symfony 项目上运行测试(并使用 Zend fw),并且 phpunit 为所有受影响的文件生成 clover。但我不想看到 symfony 和 Zend 库(以及所有其他第三方库)的覆盖范围。我希望只看到我的代码的覆盖范围。 或者这可能是三叶草查看器应该做的?我正在使用 hudson 的 clover 插件,但它不支持查看特定来源。 clover 插件显示,我的代码只覆盖了 20%,这是不正确的,因为它也考虑了 symfony 和 Zend 库。

顺便说一句,可能还有其他方法可以得到这个吗?

Why do I need this? I'm running the tests on symfony project (and using Zend fw) and phpunit generates clover for all affected files. But I don't want see coverage for symfony and Zend libs (and all another third party ones). I wish see coverage for my code only.
Or may be this should do clover viewer? I'm using the clover plugin for hudson, but it does not support viewing for particular sources. The clover plugin shows, that my code covered only 20%, that is incorrect because it considered symfony and Zend libs too.

Btw, may be there are another ways to get this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉目亦如画i 2024-09-23 08:12:11

您需要为 phpunit 创建一个配置文件,在该配置文件中您可以从代码覆盖率中排除特定文件或目录。

示例文件如下所示:

<phpunit stopOnFailure="false">
    <testsuite name="Name">
    </testsuite>

<filter>
    <whitelist>
            <directory suffix=".php">../php</directory>
            <exclude>
                    <file>../php/somefile.php</file>
                    <directory suffix=".php">../php/pdf</directory>
            </exclude>
    </whitelist>
</filter>

<logging>


        <log type="coverage-html" target="target-dir/coverage" charset="UTF-8" yui="true" highlight="true"/>
        <log type="coverage-clover" target="target-dir/build/logs/clover.xml"/>
</logging>

</phpunit>

对于上述文件,../php 下的所有内容(这是相对于测试所在目录和执行 phprun 的目录)都包含在代码覆盖率中,除了文件。 ./php/somefile.php 以及 ../php/pdf 目录中扩展名为 .php 的所有文件

将此文件命名为 phpunit.xml,将其放入运行测试的同一目录中。他们,如果你运行 phpunit,它会拾取conf。

如果您无法使用此特定文件名,您可以从命令行指定名称

phpunit --configuration yourconf.xml

有关 phpunit 配置文件的更多详细信息,请访问:http://phpunit.de/manual/3.7/en/appendixes.configuration.html

You need to create a configuration file for phpunit, inside that configuration file you can exclude specific files or directories from code coverage.

Example file looks like this:

<phpunit stopOnFailure="false">
    <testsuite name="Name">
    </testsuite>

<filter>
    <whitelist>
            <directory suffix=".php">../php</directory>
            <exclude>
                    <file>../php/somefile.php</file>
                    <directory suffix=".php">../php/pdf</directory>
            </exclude>
    </whitelist>
</filter>

<logging>


        <log type="coverage-html" target="target-dir/coverage" charset="UTF-8" yui="true" highlight="true"/>
        <log type="coverage-clover" target="target-dir/build/logs/clover.xml"/>
</logging>

</phpunit>

With the above file everything under ../php (this is relative from the directory where tests are in and phprun is executed from) is included in code coverage, except the file ../php/somefile.php and all files with extension .php from directory ../php/pdf

Name this file phpunit.xml, put it into the same directory where you run the tests from. Them, if you run phpunit, it will pick the conf up.

If you cannot use this particular filename, you can give name from the command line

phpunit --configuration yourconf.xml

More details about phpunit configuration file is available at: http://phpunit.de/manual/3.7/en/appendixes.configuration.html

莫言歌 2024-09-23 08:12:11

我认为配置xml文件的过滤注释必须由loggin节点包裹:

像这样:

<phpunit stopOnFailure="false">
    <testsuite name="Name"></testsuite>

    <logging>
        <filter>
                <whitelist>
                        <directory suffix=".php">../php</directory>
                        <exclude>
                                <file>../php/somefile.php</file>
                                <directory suffix=".php">../php/pdf</directory>
                        </exclude>
                </whitelist>
        </filter>

        <log type="coverage-html" target="target-dir/coverage" charset="UTF-8" yui="true" highlight="true"/>
        <log type="coverage-clover" target="target-dir/build/logs/clover.xml"/>
    </logging>

I think the filter note of the configuration xml file must be wrapped by the loggin node:

Like this:

<phpunit stopOnFailure="false">
    <testsuite name="Name"></testsuite>

    <logging>
        <filter>
                <whitelist>
                        <directory suffix=".php">../php</directory>
                        <exclude>
                                <file>../php/somefile.php</file>
                                <directory suffix=".php">../php/pdf</directory>
                        </exclude>
                </whitelist>
        </filter>

        <log type="coverage-html" target="target-dir/coverage" charset="UTF-8" yui="true" highlight="true"/>
        <log type="coverage-clover" target="target-dir/build/logs/clover.xml"/>
    </logging>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文