Как сбить тест, который застрял в бесконечном цикле?
У меня есть код, который создает бесконечный цикл. Теперь мне нужно написать тест, который провалится после примерно 200 мс. 200ms укажет, что код находится в бесконечном цикле.
Например:
public void CodeUnderTest()
{
while(true)
{
}
}
Ответы
Ответ 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)]
См. Как заставить тесты перестать работать
Вы можете установить временные рамки, с которыми выполняется выполнение теста или тестового прогона соблюдать. Возможно, вам придется это сделать, например, если вы работать в тестовой лаборатории и пройти пробный прогон до определенного времени дня.
Другим сценарием для использования временных ограничений является нечувствительный код.