Dernière modification : Dec 08 , 2024

Contenu de l'exercice

Apprendre à utiliser les timeouts de JUnit 5 pour gérer les tests temporels dans le cadre d'un projet Maven.

Objectifs de l'exercice

Le projet contient une classe Calculator qu'il convient de tester.

Etapes :

Création du projet Maven :

Ouvrez votre terminal ou invite de commandes. Utilisez la commande suivante pour créer un nouveau projet Maven interactif :


mvn archetype:generate -DgroupId=com.example -DartifactId=monprojet -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Structure du projet :

Allez dans le répertoire du projet nouvellement créé :


cd monprojet

Configuration du fichier pom.xml :

Ouvrez le fichier pom.xml avec votre éditeur de texte préféré. Ajoutez la dépendance JUnit 5 dans la section :


<dependencies>
    <!-- ... autres dépendances ... -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Installation des dépendances :

Retournez dans le terminal et exécutez la commande Maven pour télécharger les dépendances :


mvn clean install

Création d'une classe avec une méthode nécessitant un timeout :

Créez une nouvelle classe dans le répertoire src/main/java/com/example :


package com.example;

public class TacheLongue {

    public void effectuerTacheLongue() {
        // Simuler une tâche longue
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}


Création d'un test avec un timeout :

Créez une nouvelle classe de test dans le répertoire src/test/java/com/example pour tester la méthode de la classe TacheLongue avec un timeout :


package com.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTimeout;
import static java.time.Duration.ofSeconds;

public class TacheLongueTest {

    @Test
    public void testEffectuerTacheLongueAvecTimeout() {
        TacheLongue tacheLongue = new TacheLongue();

        assertTimeout(ofSeconds(3), () ->
                tacheLongue.effectuerTacheLongue()
        );
    }
}

Exécution des tests :

Utilisez la commande Maven pour exécuter les tests :

mvn test

Résultats :

Vous devriez voir la sortie indiquant que le test a été exécuté avec succès, et que le timeout a été respecté.

Conclusion :

Vous avez appris à utiliser les timeouts de JUnit 5 pour gérer les tests temporels dans un projet Maven. Cela permet de s'assurer que les tâches longues se terminent dans le délai spécifié. Explorez d'autres fonctionnalités avancées de JUnit 5 pour des tests unitaires plus complets, y compris ceux liés à la gestion du temps.