NUnit中单个测试的超时

Rad*_*tov 19 .net c# nunit

我有以下问题:我知道NUnit中有一个Timeout属性.我的问题是单元测试实际上产生了一个新进程,如果冻结从未被NUnit杀死.如何实现实际摆脱流氓进程的超时?

谢谢,R.

Ser*_*kiy 15

你可以使用超时断言,而不是整个测试方法的超时:

Assert.That(actual, Is.EqualTo(expected).After(5000, 50));
Run Code Online (Sandbox Code Playgroud)


ash*_*999 5

编辑:可接受的答案是一个更好的答案。

如果您的测试最终超时(尽管比您希望的晚),则可以始终使用以下MaxTime属性:http : //www.nunit.org/index.php?p=maxtime&r =2.5.1并自己清理线程:

[Test, Maxtime(2000)]
public void TimedTest()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

否则,最好的选择可能是实施自己的计时机制。使用计时器(或繁忙的while循环),如果超过了超时时间,则终止进程(如果跨测试通用,则可以在ShutDown方法中终止)并发出信号失败。

NUnit超时没有任何事件可让您在测试超时后运行代码。您必须自己动手,看起来像。