Как программно приостановить юнит-тест?
Я использую встроенную платформу для юнит-тестирования 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");