NUnit 在遇到超时时究竟会做什么?我曾经认为它会通过抛出 TimeoutException 来中止测试,但这个测试证明并非如此:
[Test, Timeout(100), ExpectedException(typeof(TimeoutException))]
public static void RaisingExpectedTimeoutException()
{
Thread.Sleep(500);
}
不幸的是,nunit 控制台只报告超时违规,但没有报告测试是如何被它中止的。有没有人更了解这将如何工作?为什么上面的测试没有引发我预期的 TimeoutException?(即使它是一个 .NET 异常类型,我认为 NUnit 使用该异常来处理超时违规)。
PS:这个测试方法也失败了:
[Test, Timeout(100), ExpectedException(typeof(ThreadAbortException))]
public static void RaisingExpectedThreadAbortException()
{
Thread.Sleep(500);
}
并且这个测试方法成功了(“没有人期望西班牙宗教裁判所!”):
[Test, ExpectedException(typeof(ThreadAbortException))]
public static void ThrowingExpectedThreadAbortException()
{
Thread.CurrentThread.Abort();
}