При восстановлении нескольких баз данных тест прерывается, но не выдается ошибка? - PullRequest
0 голосов
/ 25 сентября 2019

Итак, у меня есть тестовый фреймворк, который восстанавливает две базы данных, есть оба метода TestInitialisation и TestCleanup.

Когда он работал в режиме Parallel.ForEach, я получал сообщение Потеря ошибки при прерываниии никаких других ошибок, поэтому я предположил, что что-то с SQL Server выдавало ошибку, и вместо этого выполнял восстановление одно за другим.

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

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

Поток был прерван

Редактировать: кажется, что это связано с атрибутом TestTimeout, но вместо того, чтобы сообщатьмне истекло время ожидания, он просто прерывает все потоки и заставляет основной поток вместо этого выдавать ошибку?

1 Ответ

0 голосов
/ 25 сентября 2019

Хорошо, я чувствую себя немного глупо, я думаю, это то, что происходит, когда вы наследуете тарелку спагетти и спрашиваете SO, прежде чем доберетесь до конца процесса отладки.

TestCleanup вызывает некоторый SQL длябаза данных, которая в настоящее время восстанавливается, и поэтому выданная ошибка будет иметь приоритет над ошибкой тайм-аута.

У меня будет строгое слово с автором о добавлении SQL в TestCleanup.

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