你如何在PHPUnit中重复测试?

时间:2012-02-28 20:20:09

标签: php phpunit

我知道“--repeat”选项,但我宁愿在测试和每个测试中定义重复。在我的单元测试中有一些我不想重复的测试,有些测试我想比其他测试更重复。

我在想:

protected function tearDown() {
  if (test has not been ran 3 times) {
      $this->runTest(); // Re-run the test
  }
}

这似乎不起作用,$ this-> run()也没有用。我查看了PHPUnit源代码,但我不确定。我猜测它正在检查测试状态,如果它已经运行,它会拒绝再次运行它。

5 个答案:

答案 0 :(得分:3)

phpunit在命令行运行程序中具有重复选项。对于重复3次的测试,其工作方式如下:

phpunit --repeat 3 myTest.php

答案 1 :(得分:2)

运行测试远远超过setUpruntearDown。首先,每个测试方法都针对测试用例的新实例运行。不要忘记@dataProvider和其他注释,代码覆盖等。你真的不想这样做。

对于绝对需要它的少数情况,请在测试方法本身中编写循环代码。

答案 2 :(得分:0)

我认为您需要退后一步,创建一个运行测试的测试!

你需要一个循环:

$myTest = \my\test\class();
foreach($iterations){
    $myTest->setup();
    $myTest->doTestyStuff();
    $myTest->tearDown();
}

您发布的代码无法正常运行,因为每次测试都需要在每次测试运行时运行设置和拆卸。

答案 3 :(得分:0)

这是一种绕行的方式,但这是我能想到的最干净的方法:

tableView's

答案 4 :(得分:-1)

这可以通过do-while循环来实现吗?

protected function tearDown() {
    $i = 0;
    do {
        $this->runTest(); // Re-run the test
        $i++;
    } while($i < 3);
}