Ich habe untersucht, wie eine Thread.sleep-Interrupt-Ausnahme in JUnit ausgelöst wird, daher lasse ich sie als Erinnerung.
■ Umgebung Java 8 JUnit 4
Wecken Sie "Unterbrechungsthread" aus "Testlauf-Thread" auf. Interrupts vom "Unterbrechungsthread" zum "Testlaufthread".
Um einen Interrupt zu machen, muss "Thread Running Test" an "Thread für Interrupt" gesendet werden. Sie können den Thread, der die Verarbeitung ausführt, mit "Thread.currentThread ()" abrufen.
Zu testender Code
public class SampleClass {
public void sample() throws InterruptedException {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw e;
}
}
}
Testcode
@Test
public void testSample() {
try {
//Definieren Sie einen Thread für die Unterbrechung
final class InterruptThread extends Thread {
Thread targetThread = null;
public InterruptThread(Thread thread) {
targetThread = thread;
}
@Override
public void run() {
try {
Thread.sleep(100);
targetThread.interrupt();
} catch (InterruptedException e) {
}
}
}
//Starten Sie einen Interrupt-Thread
InterruptThread th = new InterruptThread(Thread.currentThread());
th.start();
//Führen Sie den zu testenden Code aus
SampleClass target = new SampleClass();
target.sample();
fail();
} catch (InterruptedException e) {
assertEquals(e.getMessage(), "sleep interrupted");
}
}
Recommended Posts