[JAVA] So testen Sie Interrupts während Thread.sleep mit JUnit

Einführung

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

Überblick

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.

Code

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

So testen Sie Interrupts während Thread.sleep mit JUnit
So testen Sie den privaten Bereich mit JUnit
So filtern Sie den JUnit-Test in Gradle
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
JUnit 5: Wie man Testfälle in enum schreibt
So schreiben Sie Testcode mit Basic-Zertifizierung
Machen Sie einen Unit-Test mit Junit.
So führen Sie UT mit Excel als Testdaten mit Spring Boot + JUnit5 + DBUnit durch
So führen Sie mit RxAndroid einen Komponententest mit JVM an einer Quelle durch
Verwendung von JUnit (Anfänger)
Wie man mit html.erb nummeriert (nummeriert)
So aktualisieren Sie mit activerecord-import
Wie schreibe ich Junit 5 organisiert
[Erstellen] Verwendung von JUnit
So führen Sie mit dem Rake-Test von gem nur bestimmte Dateien aus
So löschen Sie das Testbild, nachdem Sie den Rspec-Test mit CarrierWave ausgeführt haben
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
So führen Sie einen Komponententest für Spring AOP durch
So führen Sie JUnit in Eclipse aus
Wie man ein Zeichen mit "~" einschließt
Wie man mssql-tools mit alpine benutzt
[Java] Testen Sie private Methoden mit JUnit
Testen Sie den Spring Framework Controller mit Junit
So starten Sie Camunda mit Docker
Umgang mit dem Ereignis, dass Committee :: InvalidRequest während des Rspec-Datei-Upload-Tests im Committee auftritt
So beschneiden Sie ein Bild in libGDX
So teilen Sie Dateien mit Docker Toolbox
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Steuern Sie die Testreihenfolge in Junit4 mit einem Aufzählungstyp
[Android] Wie man mit dunklen Themen umgeht
Verwendung von BootStrap mit Play Framework
So wechseln Sie Miniaturbilder mit JavaScript
[Hinweis] Erste Schritte mit Rspec
API-basierte Steuerung mit cancancan
So beheben Sie das Systemdatum in JUnit
So erreichen Sie den Dateidownload mit Feign
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So implementieren Sie TextInputLayout mit Validierungsfunktion
So behandeln Sie Anmeldefehler mit devise
So löschen Sie Daten mit einem externen Schlüssel
Der JUnit 5-Gradle-Test führt zu einem Fehler mit der Lombok-Annotation
So überwachen Sie Nginx mit Docker-Compose mit Datadog
Einführung eines automatisierten Java-Tests mit JUnit 5 + Gradle
Der Umgang mit dem Vorkompilieren von Assets ist fehlgeschlagen.
[SpringBoot] So schreiben Sie einen Controller-Test
So erreichen Sie das Hochladen von Dateien mit Feign
So führen Sie Blazor (C #) mit Docker aus
So erstellen Sie eine Rails 6-Umgebung mit Docker
So testen Sie eine Klasse, die application.properties mit SpringBoot verarbeitet (Anfrage: darauf hingewiesen)
So laden Sie Oracle JDK 8 U / min mit Curl herunter
Wie man jeden Fall mit Mockito 1x verspottet