Я нашел следующий пример в 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, что приведет к завершению проверки.
Но как насчет второго теста (infinLoop)? Это ничего не бросает. Как это прекратится после таймаута?
Я понимаю из вашего комментария (и посмотрев исходный код), что junit попытается присоединиться к потоку с таймаутом и проверить, все ли он работает после таймаута. Если это так, тест завершится неудачно. I.e., даже если тест работает в фоновом режиме, он не удастся после неудачного вызова для соединения. – sapito