仅生成刚刚测试过的内容

问题描述 投票:8回答:3

每次我运行一个类或整个文件夹的单元测试时,phpunit会为整个系统生成覆盖,因为它是在phpunit.xml中配置的。 这很糟糕,因为它需要更长的时间并耗尽PHP的内存。

我的phpunit.xml

<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit
    backupGlobals               = "false"
    backupStaticAttributes      = "false"
    colors                      = "true"
    convertErrorsToExceptions   = "true"
    convertNoticesToExceptions  = "true"
    convertWarningsToExceptions = "true"
    processIsolation            = "false"
    stopOnFailure               = "false"
    syntaxCheck                 = "false"
    bootstrap                   = "Bootstrap.php" >

    <testsuites>
        <testsuite name="Application Module Suite Test">
            <directory>./Module1Test</directory>
            <directory>./Module2Test</directory>
            <directory>./Module3Test</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory>../module/Module1</directory>
            <directory>../module/Module2</directory>
            <directory>../module/Module3</directory>
        </whitelist>
    </filter>

</phpunit>

有没有办法动态地生成我现在正在测试的内容?

例 对于下面的命令,我想仅为Controller/ExampleController.php路径生成覆盖。

phpunit Controller/ExampleController.php --coverage-html ~/Desktop/tests

我正在使用PHPUnit 4.8和3.7,Sublime Text Editor,应用程序正在使用Zend Framework 2。

php zend-framework2 phpunit
3个回答
1
投票

从PHPUnit 5.6手册:

可以在测试代码中使用@covers注释(参见表B.1)来指定测试方法要测试的方法。如果提供,则仅考虑指定方法的代码覆盖率信息。例11.2显示了一个例子。

请参阅此链接以获取示例:https://phpunit.de/manual/current/en/code-coverage-analysis.html#code-coverage-analysis.specifying-covered-methods.examples.BankAccountTest.php

这对你的场景有用吗?


1
投票

您需要将addUncoveredFilesFromWhitelist参数设置为false

<filter>
    <whitelist addUncoveredFilesFromWhitelist="false">
        <directory>../module/Module1</directory>
        <directory>../module/Module2</directory>
        <directory>../module/Module3</directory>
    </whitelist>
</filter>

有关this answeraddUncoveredFilesFromWhitelist参数的解释,请参阅processUncoveredFilesFromWhitelist


0
投票

processUncoveredFilesFromWhitelist一样将True参数添加到https://phpunit.de/manual/current/en/appendixes.configuration.html#appendixes.configuration.whitelisting-files

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory>../module/Module1</directory>
        <directory>../module/Module2</directory>
        <directory>../module/Module3</directory>
    </whitelist>
</filter>
© www.soinside.com 2019 - 2024. All rights reserved.