[JAVA] Comment tester les interruptions pendant Thread.sleep avec JUnit

introduction

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

Aperçu

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

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

Comment tester les interruptions pendant Thread.sleep avec JUnit
Comment tester l'étendue privée avec JUnit
Comment filtrer JUnit Test dans Gradle
Comment tester une méthode privée qui prend un tableau ou un argument de longueur variable dans JUnit
JUnit 5: Comment écrire des cas de test dans enum
Comment écrire du code de test avec la certification de base
Faites un test unitaire avec Junit.
Comment effectuer UT avec Excel en tant que données de test avec Spring Boot + JUnit5 + DBUnit
Comment faire un test unitaire avec JVM sur une source à l'aide de RxAndroid
Comment utiliser JUnit (débutant)
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment écrire Junit 5 organisé
[Création] Comment utiliser JUnit
Comment exécuter uniquement des fichiers spécifiques avec le test de rake de gem
Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Comment faire un test unitaire de Spring AOP
Comment exécuter JUnit dans Eclipse
Comment entourer n'importe quel caractère avec "~"
Comment utiliser mssql-tools avec Alpine
[Java] Tester des méthodes privées avec JUnit
Contrôleur de cadre de test Spring avec Junit
Comment démarrer Camunda avec Docker
Comment gérer l'événement où Committee :: InvalidRequest se produit en comité pendant le test de téléchargement de fichier Rspec
Comment recadrer une image avec libGDX
Comment partager des fichiers avec Docker Toolbox
[Java] Résumez comment comparer avec la méthode equals
Contrôler l'ordre de test dans Junit4 avec un type d'énumération
[Android] Comment gérer les thèmes sombres
Comment utiliser BootStrap avec Play Framework
Comment changer d'images miniatures avec JavaScript
[Note] Comment démarrer avec Rspec
Comment faire un contrôle basé sur l'API avec cancancan
Comment fixer la date système dans JUnit
Comment réaliser le téléchargement de fichiers avec Feign
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment implémenter TextInputLayout avec la fonction de validation
Comment gérer les erreurs de connexion avec l'appareil
Comment supprimer des données avec une clé externe
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Comment surveiller nginx avec docker-compose avec datadog
Présentation du test Java automatisé avec JUnit 5 + Gradle
Comment gérer les actifs de précompilation a échoué.
[SpringBoot] Comment écrire un test de contrôleur
Comment réaliser le téléchargement de fichiers avec Feign
Comment exécuter Blazor (C #) avec Docker
Comment créer un environnement Rails 6 avec Docker
Comment tester une classe qui gère application.properties avec SpringBoot (requête: signalée)
Comment télécharger Oracle JDK 8 rpm avec curl
Comment se moquer de chaque cas avec Mockito 1x