J'ai étudié comment lever une exception d'interruption thread.sleep dans JUnit, je vais donc la laisser comme un rappel.
■ Environnement Java 8 JUnit 4
Réveillez le "thread d'interruption" du "thread de test en cours d'exécution". Interruptions du "thread d'interruption" au "thread de test en cours d'exécution".
Pour faire une interruption, il est nécessaire de dire "thread running test" à "thread for interruption"
Vous pouvez obtenir le thread qui exécute le traitement avec Thread.currentThread ()
.
Code à tester
public class SampleClass {
public void sample() throws InterruptedException {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw e;
}
}
}
Code de test
@Test
public void testSample() {
try {
//Définir un fil pour l'interruption
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) {
}
}
}
//Démarrer un thread d'interruption
InterruptThread th = new InterruptThread(Thread.currentThread());
th.start();
//Exécutez le code sous test
SampleClass target = new SampleClass();
target.sample();
fail();
} catch (InterruptedException e) {
assertEquals(e.getMessage(), "sleep interrupted");
}
}
Recommended Posts