При каких обстоятельствах [ClassCleanup] и [TestCleanup] не запускаются - PullRequest
5 голосов
/ 04 февраля 2011

У меня есть набор тестовых случаев MSTest, которые используют методы с этими атрибутами для удаления всех строк из таблиц в тестовой базе данных, созданной после запуска тестов; время от времени я получаю строку из одного из модульных тестов, все еще находящихся в БД.

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

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

Ну, во-первых, технически «модульный тест» не должен касаться БД.Но я также использую NUnit для своих интеграционных тестов, поэтому не важно.

Единственные обстоятельства, при которых методы очистки не будут выполняться полностью, - это если в функции очистки произошла ошибка или исключениевызвал время выполнения, чтобы закрыть.Единственное, что я знаю, это переполнение стека и ошибки нехватки памяти.Прерывание теста из отладчика также приведет к пропуску фазы очистки.

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

2 голосов
/ 04 февраля 2011

Если вы отлаживаете тесты и останавливаете отладчик до завершения выполнения теста, он не будет вызван.

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