Подтвердить что ты не робот

Любой способ сохранить переменные экземпляра между тестами phpunit?

Я пишу функциональные тесты для SOA-системы, поэтому вам нужно протестировать бэкэнд-подсистему из внешнего интерфейса.

Это стандартная система CRUD. У меня есть тест, который позволяет тестировать объект, и возвращает мне идентификатор нового объекта. В последующих тестах я хочу отредактировать, а затем удалить этот объект, но phpunit, кажется, повторно создает экземпляр класса test каждый раз, поэтому я теряю свои переменные экземпляра.

Как я могу это достичь? Выполнение функциональных тестов на каждом сервере в архитектуре не является вариантом.

4b9b3361

Ответ 1

Один из способов передать материал между тестами - использовать @depends аннотация

public function testCreate() {
    //...
    return $id;
}

/**
 * @depends testCreate
 */
public function testDelete($id) {
    // use $id
}

если вы сделаете это так, тест "удалить" будет пропущен, если создание не будет работать.

Таким образом, вы получите только one ошибку, если служба не работает вообще, а не многие неудачные тесты.


Если вы не хотите этого делать или что не соответствует вашему делу по какой-либо причине, переменные статического класса также могут быть опцией, но вы должны быть уверены, что знаете, что вы абсолютно в них нуждаетесь:)

Ответ 2

Поскольку вы хотите запускать каждый тестовый файл один раз, вы можете сохранить переменные экземпляра на уровне класса, например, в статических переменных или во внешнем хранилище singleton/global использует get_class($testCase) для ключей...

Ответ 3

Я предполагаю, что я просто запустил тест "create", прежде чем запускать "edit" или "delete" и соответствующим образом установить переменную экземпляра.