运行匹配多个组的测试

时间:2016-04-20 08:56:18

标签: phpunit

我有各种类型的测试(单位,验收等),我为粒度分配了多个标签

/**
 * @test
 * @group unit
 * @group controllers
 */


/**
 * @test
 * @group unit
 */


/**
 * @test
 * @group controllers
 */

是否可以运行匹配两个或更多组的phpunit测试?像

这样的东西
--group unit|controllers

在这种情况下,唯一应该运行的测试是第一次测试,因为它同时具有unitcontrollers组,而其他测试不会运行。

使用符号

--group unit,controllers

unit运行所有测试,然后从controllers运行所有(或剩余 - 我不记得)测试 - 大型这可能导致长时间运行。

2 个答案:

答案 0 :(得分:7)

  • --group unit,controllers应该正常工作
  • --exclude也可用于运行除指定组
  • 之外的所有测试
  • @group unit|controllers不是允许的语法

答案 1 :(得分:2)

您需要重新考虑 @group 注释的使用,首先要拆分为测试套件。您可以尝试遵循有关文件结构的phpunit规则或使用xml定义测试套件。 例如:

<phpunit bootstrap="src/autoload.php">
  <testsuites>
    <testsuite name="unit">
      <directory>webroot/*/Tests/Unit</directory>
    </testsuite>
    <testsuite name="integration">
      <directory>webroot/*/Tests/Integration</directory>
    </testsuite>

    <testsuite name="controllers">
      <directory>webroot/*/Tests/Integration/Controller</directory>
    </testsuite>

  </testsuites>
</phpunit>

@groups 通常用于按业务实体合并,例如。运行与应用程序搜索功能相关的所有测试。

此处提供更多信息https://phpunit.de/manual/current/en/organizing-tests.html