如何从多个测试用例中选择测试用例

时间:2011-07-01 08:55:11

标签: php phpunit selenium-rc

我想轻松地使用php单元从我的多个测试用例类中执行一些选定的测试用例。

由于我的1-2个测试用例在一堆测试用例中失败,并且发现难以再次为这两个测试套件执行整个测试套件,是否有任何方法没有向其他人添加注释或在不同的套件中复制这两个方法。

感谢所有提前

3 个答案:

答案 0 :(得分:31)

您可以使用--filter cli option

从套件中运行单个测试用例或单个测试类
--filter <pattern>        Filter which tests to run.

--filter运行名称与给定模式匹配的测试。模式可以是单个测试的名称,也可以是与多个测试名称匹配的正则表达式。

实施例

在文件BlaTest中包含以下示例测试类testSame,其中包含测试用例testElseBlaTest.php

// BlaTest.php
<?php

class BlaTest extends PHPUnit_Framework_TestCase {

    public function testSame() { $this->assertSame(1,1); }
    public function testElse() { $this->assertSame(1,1); }

}

BlaTest

内运行所有测试用例

此过滤器与测试类名称匹配。

$ phpunit --filter BlaTest

BlaTest

内运行单个测试用例

此过滤器与测试用例名称匹配,然后指示跨文件BlaTest.php运行此过滤器。

$ phpunit --filter testSame BlaTest.php

答案 1 :(得分:4)

--filter选项接受正则表达式作为其值(我使用的是phpunit 3.7)。这允许您通过使用断言来指定将被排除的测试,如下所示: --filter='/::((?!test(Else|Same))\w+)/'

答案 2 :(得分:2)

如果您希望按代码过滤,可以通过使用$ this-&gt; getName()检查要运行的测试来标记要在setUp() - 方法[1]中跳过的测试。这样,这些测试将显示为被跳过。

一个例子:

class FooTest extends PHPUnit_Framework_TestCase {

  public function setUp() {
    if( 'testIwantToSkip' === $this->getName() ) {
      $this->markTestSkipped( 'Test skipped!' );
    }
  }

  ...
}

[1] http://www.phpunit.de/manual/current/en/fixtures.html