我知道“--repeat”选项,但我宁愿在测试和每个测试中定义重复。在我的单元测试中有一些我不想重复的测试,有些测试我想比其他测试更重复。
我在想:
protected function tearDown() {
if (test has not been ran 3 times) {
$this->runTest(); // Re-run the test
}
}
这似乎不起作用,$ this-> run()也没有用。我查看了PHPUnit源代码,但我不确定。我猜测它正在检查测试状态,如果它已经运行,它会拒绝再次运行它。
答案 0 :(得分:3)
phpunit在命令行运行程序中具有重复选项。对于重复3次的测试,其工作方式如下:
phpunit --repeat 3 myTest.php
答案 1 :(得分:2)
运行测试远远超过setUp
,run
和tearDown
。首先,每个测试方法都针对测试用例的新实例运行。不要忘记@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);
}