我有一些测试非常慢,我想将超时时间设置为15分钟。
作为测试目的,我有这个例子:
[Test, Timeout(900000)]
public void Test1()
{
Thread.Sleep(900001);
}
一段时间后测试停止,没有错误。
正确的做法是什么?
如您所知,Thread.Sleep
和NUnit的TimeoutAttribute
都以毫秒为单位花费时间。由于线程调度和一般计时器精度的原因,指定彼此相差1毫秒的时间不足以保证超时。关于Thread.Sleep
的精度的更多讨论,以及扩展NUnit的超时线程的精度,请参阅这个答案。
尝试指定两个数字之间更大的差异,我想你会看到它的行为正如你所期望的那样。例如,休眠900100
毫秒,并保持超时值不变。使用15分钟的超时时间,您不会注意到等待超时的额外十分之一秒。