Как повторить тест в PHPUnit? - PullRequest
       3

Как повторить тест в PHPUnit?

1 голос
/ 29 февраля 2012

Я знаю о параметре --repeat, но я бы лучше определил повторение в тесте и для каждого теста.В моих модульных тестах есть тесты, которые я не хочу повторять, и есть тесты, которые я хочу повторить больше, чем другие.

Я думал:

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

Это не такпохоже, не работает, а также $ this-> run ().Я посмотрел на исходный код PHPUnit, но я не уверен.Я предполагаю, что он проверяет статус теста, и если он был запущен, он запрещает повторный запуск.

Ответы [ 4 ]

2 голосов
/ 29 февраля 2012

Выполнение теста намного больше, чем setUp, run и tearDown. Во-первых, каждый метод теста запускается для нового экземпляра контрольного примера. Не забывайте о @dataProvider и других аннотациях, покрытии кода и т. Д. Вы действительно не хотите этого делать.

В тех немногих случаях, когда это абсолютно необходимо, закодируйте цикл в самом методе теста.

0 голосов
/ 02 июля 2019

Это немного окольный способ сделать это, но это самое чистое, что я мог придумать:

/**
 * @dataProvider numberOfTests
 */
public function test()
{
    // Do your test
}

public function numberOfTests() 
{
    for ($i = 0; $i < 100; $i) {
       yield [];
    }
}
0 голосов
/ 29 февраля 2012

Я думаю, вам нужно сделать шаг назад и создать тест, который запускает ваши тесты!

Вам нужен цикл, который будет выглядеть примерно так:

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

кодВы разместили сообщение не будет работать, потому что каждый тест требует настройки и демонтажа для запуска каждый раз при запуске теста .

0 голосов
/ 29 февраля 2012

Разве этого нельзя достичь с помощью цикла do-while?

protected function tearDown() {
    $i = 0;
    do {
        $this->runTest(); // Re-run the test
        $i++;
    } while($i < 3);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...