我有各种类型的测试(单位,验收等),我为粒度分配了多个标签
/**
* @test
* @group unit
* @group controllers
*/
/**
* @test
* @group unit
*/
/**
* @test
* @group controllers
*/
是否可以运行仅匹配两个或更多组的phpunit测试?像
这样的东西--group unit|controllers
在这种情况下,唯一应该运行的测试是第一次测试,因为它同时具有unit
和controllers
组,而其他测试不会运行。
使用符号
--group unit,controllers
从unit
运行所有测试,然后从controllers
运行所有(或剩余 - 我不记得)测试 - 大型这可能导致长时间运行。
答案 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