我有一些非常慢的测试,我想设置超时15分钟。
作为测试目的,我有这个例子:
[Test, Timeout(900000)]
public void Test1()
{
Thread.Sleep(900001);
}
一段时间后的测试会停止而没有错误。
这样做的正确方法是什么?
答案 0 :(得分:0)
如您所知,Thread.Sleep
和NUnit' TimeoutAttribute
需要花费时间毫秒。指定彼此相差1毫秒的时间并不足以保证由于线程调度和一般定时器精度而导致的超时。有关Thread.Sleep
准确性的更多讨论,以及NUnit超时线程的准确性,请参阅this answer。
尝试指定两个数字之间的较大差异,我怀疑您会发现它的行为符合您的预期。例如,睡眠时间为900100
毫秒,并保持超时值不变。超时15分钟,你不会注意到额外的十分之一秒等待它超时。