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

O.O*_*O.O 22 .net c# unit-testing mstest .net-2.0

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

例如:

public void CodeUnderTest()
{
   while(true)
   {

   }
} 
Run Code Online (Sandbox Code Playgroud)

The*_*eHe 17

关于什么:

Task.Create(CodeUnderTest).Wait(TimeSpan.FromSeconds(1));
Run Code Online (Sandbox Code Playgroud)

要么:

Task.Factory.StartNew(CodeUndertest).Wait(TimeSpan.FromSeconds(1));
Run Code Online (Sandbox Code Playgroud)

要么:

Task.Factory.StartNew(() => CodeUndertest(arg1,arg2,arg3...)).Wait(TimeSpan.FromSeconds(1));
Run Code Online (Sandbox Code Playgroud)


P.B*_*key 17

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

[TestMethod]
[Timeout(200)]
Run Code Online (Sandbox Code Playgroud)

请参见如何强制测试停止运行

您可以设置执行测试或测试运行的时间限制.您可能需要这样做,例如,如果您在测试实验室工作并且需要在一天中的某个时间完成测试运行.

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