如何通过phpunit.xml在测试套件中包含/排除某些组

时间:2018-03-12 23:47:46

标签: php unit-testing phpunit

我想从测试套件中排除或包含某些测试。我希望通过注释/组对此进行一些控制,而不是在phpunit.xml

中命名特定文件或文件夹

我尝试过这样的事情,但它似乎忽略了<groups>和/或<include>

<testsuites>
    <testsuite name="Unit">
        <directory>Unit</directory>
    </testsuite>
    <testsuite name="IntegrationFirstRound">
        <directory>Integration/</directory>
        <include><!-- I want to ONLY include this group -->
            <group>first-round</group>          
        </include>
    </testsuite>
    <testsuite name="IntegrationOther">
        <directory>Integration/</directory>
        <exclude><!-- I want to EXCLUDE this group, run all others -->
            <group>first-round</group>
        </exclude>
    </testsuite>
</testsuites>

我不想将测试移动到不同的文件夹只是为了适应这种情况,我不想从CLI多次调用phpunit,我希望我能通过xml配置实现所需的结果。

3 个答案:

答案 0 :(得分:4)

好的,看看应该是你看的第一个DOC

https://phpunit.de/manual/current/en/appendixes.configuration.html

您需要一个groups元素,其中包含group。所以你在哪里

<exclude><!-- I want to EXCLUDE this group, run all others -->
     <group>first-round</group>
</exclude>

你应该

<groups>
    <exclude><!-- I want to EXCLUDE this group, run all others -->
        <group>first-round</group>
   </exclude>
</groups>

它并没有真正说明它是否应该进入<testsuite>,而我从未使用它,但我相信如果你查看文档,你应该找到一些例子。

答案 1 :(得分:0)

就我而言,我分组为data


<?php

namespace Tests\Unit\Artefact;

use Tests\TestCase;

/**
 * @group data
 */
class DataMovieTest extends TestCase
{

}

然后像这样从终端运行phpunit

phpunit --exclude data

答案 2 :(得分:0)

an issue with groups in phpunit repo 中有一个讨论,其中 Sebastian Bergmann 明确提供了一个示例 phpunit.xml 文件。

请在下面找到有关如何放置组和包含(排除)元素的示例摘录

<phpunit>
 <testsuite name="My Test Suite">
  <file>Test.php</file>
 </testsuite>

 <groups>
  <include>
   <group>one</group>
  </include>
 </groups>
</phpunit>

Screenshot of issue with groups in the phpunit repo