2012-04-26 4 views
3

Я разрабатываю API, и у меня возникают проблемы с написанием некоторых тестовых таблиц. Я уже написал группу тестовых тестов для тестирования всех объектов. К ним относятся общие операции, такие как создание, изменение и удаление.Не удается получить зависимости PHPUnit для работы

/** 
* @dataProvider provideCreateData 
* @depends LoginTest::testLogin 
*/ 
public function testCreate 

/** 
* @dataProvider provideModifyData 
* @depends testCreate 
*/ 
function testModify 

В dataproviders предоставить список лиц API наряду с их соответствующим атрибутом, тесты динамически проверить все объекты без нас приходится основные тесты, когда Есть будущие изменения.

В настоящее время все работает отлично, но у меня возникли проблемы с интеграцией других необходимых тестов, которые жестко закодированы, для таких вещей, как функции поиска, которые не следуют общей схеме. Очевидно, что я не могу проверить функцию поиска без существующих сущностей, и поэтому тест на поиск должен запускаться после теста на создание, с которым у меня возникают проблемы. Я пробовал использовать:

/** 
* @depends GeneralTest::testCreate 
*/ 
public function testFind() {} 

Что не работает, тест не запускается и вместо этого пропускается без видимой причины. Однако тест выполняется, если я удаляю зависимость, но тогда я больше не могу гарантировать, что в базе данных будут существовать сущности.

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

ответ

5

Существует несколько причин, по которым потребительский тест будет пропущен.

  1. «testFind» определен до «GeneralTest :: testCreate». PHPUnit не изменяет порядок выполнения, чтобы помочь зависимости; то есть на вас.
  2. Не удалось выполнить утверждение в 'GeneralTest :: testCreate'. Если утверждение не выполняется, зависимость не была выполнена, поэтому метод пропускается.

Вы должны использовать @depends, если вам действительно нужно. Вы должны стремиться к тому, чтобы каждый тестовый метод тестировал определенный путь выполнения. Если вы считаете, что вам нужна эта зависимость, вам необходимо настроить тестовый пакет, чтобы вы могли контролировать порядок тестов.

https://phpunit.de/manual/3.7/en/organizing-tests.html#organizing-tests.xml-configuration

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