如何使陷入无限循环的测试失败?

时间:2012-08-27 16:06:24

标签: c# .net unit-testing .net-2.0 mstest

我有一些产生无限循环的代码。现在我需要编写一个在大约200ms后失败的测试。 200ms将指示代码处于无限循环中。

例如:

public void CodeUnderTest()
{
   while(true)
   {

   }
} 

2 个答案:

答案 0 :(得分:17)

怎么样:

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));

答案 1 :(得分:14)

使用MSTest时,您可以使用属性

[TestMethod]
[Timeout(200)]

请参阅How to force tests to stop running

  

您可以设置执行测试或测试运行的时间限制   遵守。您可能需要这样做,例如,如果您   在测试实验室工作,需要在一定时间内完成测试运行   一天。

     

使用时间限制的另一种情况是无响应代码。