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

Метод MsTest TestCleanup не вызывается, когда генерируется необработанное исключение

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

Я установил метод TestCleanup, который убивает процесс приложения (в то время как TestInitialize запускает его), так что после завершения тестового прогона пользовательский интерфейс перезапускается с чистым состоянием.

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

4b9b3361

Ответ 1

Если исключение не обнаружено в TestInitialize, TestCleanup не будет вызываться.

Ответ 2

Это, к сожалению, расходится с тем, как С# обрабатывает исключения в конструкторах: когда это происходит, вызывается finalizer.