タイムアウトが発生したときに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();
}