私はJUnitのドキュメントで、次の例を見つけました:のJUnitとInterruptedExceptionある
public static class HasGlobalLongTimeout {
@Rule
public Timeout globalTimeout= new Timeout(20);
@Test
public void run1() throws InterruptedException {
Thread.sleep(100);
}
@Test
public void infiniteLoop() {
while (true) {}
}
}
私はJUnitのは、最初のテストを中断しようとするたび、それが実行されているスレッドを中断し、それがスローされますことを理解しInterruptedExceptionが発生し、テストが終了します。
しかし、2番目のテスト(infiniteLoop)はどうですか?それは何も投げていない。タイムアウト後にどのように停止しますか?
あなたのコメントから(そしてソースコードを見て)、junitはタイムアウトでスレッドに参加しようとし、タイムアウト後にまだ実行中であるかどうかをチェックします。そうであれば、テストは失敗します。つまり、テストがバックグラウンドで実行されていても、失敗した参加の呼び出し後に失敗します。 – sapito