我有以下问题:我知道NUnit中有一个Timeout属性.我的问题是单元测试实际上产生了一个新进程,如果冻结从未被NUnit杀死.如何实现实际摆脱流氓进程的超时?
谢谢,R.
Ser*_*kiy 15
你可以使用超时断言,而不是整个测试方法的超时:
Assert.That(actual, Is.EqualTo(expected).After(5000, 50));
Run Code Online (Sandbox Code Playgroud)
编辑:可接受的答案是一个更好的答案。
如果您的测试最终超时(尽管比您希望的晚),则可以始终使用以下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超时没有任何事件可让您在测试超时后运行代码。您必须自己动手,看起来像。