Как программно приостановить юнит-тест?

Я использую встроенную платформу для юнит-тестирования visual-studio - Microsoft.VisualStudio.TestTools.UnitTesting Пространство имен.

Мне нужно приостановить выполнение юнит-теста из кода теста (и, предпочтительно, позволить разработчику возобновить тест, нажав какую-нибудь кнопку или что-то в этом роде).

Есть ли встроенный способ сделать это?

Я знаю, что могу использовать Thread.Sleep() просто сделать паузу на несколько секунд, но есть ли способ сделать паузу / возобновить или как-то подсказать пользователю? Возможно, другим очевидным решением было бы позвонить MessageBox.Show() но для этого потребуется ссылка на всю семью Windows.Forms...

PS Причина этого: у меня "нечеткий" интеграционный тест, который иногда не проходит, но я не могу сказать, почему именно (это тест пользовательского интерфейса, который автоматизирует браузер с помощью Selenium, и экран браузера быстро мигает, и я не могу сказать, что там произошло...). И по какой-то причине я не могу уловить этот сбой при отладке теста, только при его регулярном запуске...

ОБНОВЛЕНИЕ: я думаю, что нет встроенного способа сделать это, и это действительно имеет смысл, так как тесты должны выполняться без какого-либо взаимодействия с пользователем по замыслу. Угадай, простой Sleep() или даже Console.ReadLine() просто заморозить выполнение, пока разработчик не нажмет "отменить" в тест-проводнике.

1 ответ

Решение

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

                Console.WriteLine("Waiting for debugger to attach");
                 if(WeirdBehaviourOccurred)
                   while (!Debugger.IsAttached)
                   {
                      Thread.Sleep(100);
                   }
                Console.WriteLine("Debugger attached");
Другие вопросы по тегам