Unit testing 使用PHPUnit运行多个测试套件

Unit testing 使用PHPUnit运行多个测试套件,unit-testing,phpunit,Unit Testing,Phpunit,在我的phpunit.xml中定义了许多,每个定义了我要测试的应用程序的不同方面。在开发过程中,我不想运行每个测试套件,只想运行我正在处理的方面中的测试套件 但是,当我想测试我的完整应用程序时,我想指定要运行的多个测试套件。有没有办法从命令行执行此操作?您可以使用@group注释执行此操作。这是你的文件 您可以通过将php docblock中的@group examplegroup放在您想要加入测试组的每个测试类之上,来指定测试所属的组 例如: <?php /** * @group ex

在我的
phpunit.xml
中定义了许多
,每个定义了我要测试的应用程序的不同方面。在开发过程中,我不想运行每个测试套件,只想运行我正在处理的方面中的测试套件


但是,当我想测试我的完整应用程序时,我想指定要运行的多个测试套件。有没有办法从命令行执行此操作?

您可以使用
@group
注释执行此操作。这是你的文件

您可以通过将php docblock中的
@group examplegroup
放在您想要加入测试组的每个测试类之上,来指定测试所属的组

例如:

<?php
/**
 * @group examplegroup
 *
 */
class StackTest extends PHPUnit_Framework_TestCase
{
    public function testPushAndPop()
    {
        $stack = array();
        $this->assertEquals(0, count($stack));

        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack));

        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
}
?>

从命令行运行组的工作原理如下:


phpunit--group examplegroup

如果您的每个测试套件都有不同的名称空间,您可以使用
--filter
选项筛选运行的测试

例如:
phpunit--filter'/Controller | Tools/'

将执行命名空间与正则表达式匹配的所有测试


在最新版本的PHPUnit(从v6.1开始)中有更多的示例,您可以简单地用逗号(
--testsuite
)分隔套件

示例:
phpunit--testdox--testsuite用户,文章


文档:

如果我理解正确,您当前运行测试时添加了
--testsuite
过滤器,以确定要运行哪个testsuite。如果这是真的,只需离开这个过滤器来运行整个测试组,或者定义
--group
s。对于团队的用途以及如何应用,根本没有任何解释。如果你能用一个例子来补充一个答案,你会非常感激:有多种方法可以实现这一点。请用您当前如何运行的示例代码更新您的问题,然后我来看看。顺便说一句,phpunit文档非常广泛,但是要使用
@group
-选项标记测试,然后使用
phpunit--group MyGroup
-语法运行它,就没有什么要说的了(至少在我看来)。谢谢Bjoern。那没有多大帮助。你能给我指一下关于如何使用组的“相当广泛”的文档吗?用代码更新我的问题?什么代码?一个例子正是我要找的……比我要找的要好!非常感谢。