2015-04-20 2 views
0

В одном из моих тестов phpunit используется набор данных (предоставляемый датаподатчиком), который занимает довольно много времени для генерации. Когда я исключаю этот тест из исполнения, его метод dataprovider все еще выполняется.Как пропустить выполнение метода поставщика данных phpunit

Как я могу пропустить выполнение dataprovider?

ответ

0

Если вы пропускаете медленные тесты изнутри теста, используя $this->markTestSkipped(), вы не можете предотвратить выполнение dataProvider.

Это связано с тем, что PHPUnit должен получить данные, которые будут переданы на тесты, перед их выполнением.

Возможные решения:

  1. Установить переменную среды из командной строки (-d key[=value] опция), которая будет считываться как по DataProvider и медленного испытания. DataProvider вернет фиктивный массив, и тест будет отмечен как пропущенный.

  2. Марк тест, как медленно, используя @group аннотацию и использовать опцию --exclude-group командной строки, так что тесты медленных групп не будут выполнены

  3. Рефакторинга теста не используются, так что никакие dataProviders, предполагая, что неудобства не имеющих тесты в отдельных случаях.

+0

Я попробую решение 1. Решение 2 не помогает: при использовании --exclude-group, dataprovider все равно будет выполнен. 3. Я использую датапровайдер, чтобы иметь различные тестовые примеры. –

Смежные вопросы