NUnit - очистка после сбоя теста - PullRequest
39 голосов
/ 15 июля 2009

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

Можно ли обнаружить, что один из тестов не прошел и выполнить какую-то очистку?

Мы не хотим писать код очистки в каждом тесте, мы уже делаем это сейчас. Я хотел бы выполнить очистку в Teardown, но только если тест не пройден, так как очистка может быть дорогой.

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

Update2

        [Test]
        public void MyFailTest()
        {
            throw new InvalidOperationException();
        }

        [Test]
        public void MySuccessTest()
        {
            Assert.That(true, Is.True);
        }

        [TearDown]
        public void CleanUpOnError()
        {
            if (HasLastTestFailed()) CleanUpDatabase();
        }

Я ищу реализацию HasLastTestFailed ()

Ответы [ 11 ]

0 голосов
/ 15 июля 2009

Как это терпит неудачу? Можно ли поместить его в блок try (do test) / catch (исправить поврежденный дБ) / finally?

Или вы можете вызвать закрытый метод, чтобы исправить его, когда проверили свое состояние сбоя.

...