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

Как сбить тест, который застрял в бесконечном цикле?

У меня есть код, который создает бесконечный цикл. Теперь мне нужно написать тест, который провалится после примерно 200 мс. 200ms укажет, что код находится в бесконечном цикле.

Например:

public void CodeUnderTest()
{
   while(true)
   {

   }
} 
4b9b3361

Ответ 1

как насчет:

Task.Create(CodeUnderTest).Wait(TimeSpan.FromSeconds(1));

или

Task.Factory.StartNew(CodeUndertest).Wait(TimeSpan.FromSeconds(1));

или

Task.Factory.StartNew(() => CodeUndertest(arg1,arg2,arg3...)).Wait(TimeSpan.FromSeconds(1));

Ответ 2

При использовании MSTest вы можете использовать атрибут

[TestMethod]
[Timeout(200)]

См. Как заставить тесты перестать работать

Вы можете установить временные рамки, с которыми выполняется выполнение теста или тестового прогона соблюдать. Возможно, вам придется это сделать, например, если вы работать в тестовой лаборатории и пройти пробный прогон до определенного времени дня.

Другим сценарием для использования временных ограничений является нечувствительный код.