Как заставить PHPUnit сделать что-то, если утверждение не выполнено - PullRequest
4 голосов
/ 20 октября 2010

Я проверяю, что функция правильно добавляет данные в БД, но я хочу, чтобы данные теста были удалены после завершения теста. Если тест не пройден, он завершается с ошибкой и никогда не получает возможность удалить строки теста.

Это единственный тест, который попадает в базу данных, поэтому я не хочу ничего делать в методе tearDown ().

Я тестирую метод типа $ obj-> save (), который сохраняет данные, проанализированные из плоского файла.

Ответы [ 3 ]

3 голосов
/ 11 августа 2011

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

Другой вариант - заключить утверждения в оператор try-catch - это предотвращает остановку теста (а также другие автоматические функции, такие как захват снимков экрана), и вы можете делать с этим все, что вам нужно.

2 голосов
/ 20 октября 2010

Используете ли вы предлагаемый подход для тестирования базы данных с помощью Database Testcase Extension ?

В основном, если тест не проходит (читайте, если нет ошибки, которая приводит к завершению PHPUnit), проблем быть не должно, поскольку база данных заполняется при запуске тестового случая:

реализация по умолчанию в PHPUnit автоматически обрезает все указанные таблицы, а затем вставляет данные из вашего набора данных в порядке, указанном в наборе данных.

, поэтому не должно быть никакихнужно сделать это вручную.Даже в случае ошибки PHPUnit очистит таблицу при следующем запуске.

2 голосов
/ 20 октября 2010

Вы должны использовать отдельные базы данных для разработки / производства и тестирования. Они идентичны по структуре, но каждый раз, когда вы выполняете тестирование, вы сбрасываете тестовую базу данных и восстанавливаете ее из некоторых данных. Дело в том, что таким образом вы можете быть абсолютно уверены, что ваша БД содержит один и тот же набор данных при каждом запуске ваших тестов. Таким образом, удаление тестовых данных не имеет большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...