Java:
Rédaction de tests

Comment faire :

Les développeurs Java utilisent principalement deux cadres de test : JUnit et TestNG. Ici, nous nous concentrerons sur JUnit, le choix le plus populaire pour écrire des tests en raison de sa simplicité et de son adoption généralisée.

Bases de JUnit

Pour utiliser JUnit dans votre projet Maven, ajoutez la dépendance suivante à votre pom.xml :

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.9.0</version>
    <scope>test</scope>
</dependency>

Un test de base dans JUnit ressemble à ceci :

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {
    
    @Test
    public void testAdd() {
        Calculator calculatrice = new Calculator();
        assertEquals(5, calculatrice.add(2, 3), "2 + 3 devrait être égal à 5");
    }
}

L’exécution de ce test se soldera soit par une réussite, indiquant que la méthode add fonctionne comme prévu, soit par un échec, affichant un message d’erreur.

Simulation avec Mockito

Dans des scénarios réels, les objets dépendent souvent d’autres objets. Mockito est un cadre de simulation populaire qui aide à créer des objets mock pour les besoins des tests.

Ajoutez Mockito à votre projet Maven :

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>4.5.1</version>
    <scope>test</scope>
</dependency>

Un cas d’utilisation simple avec Mockito :

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

public class UserServiceTest {

    @Test
    public void testGetUsername() {
        // Créez un UserRepository mock
        UserRepository mockRepository = mock(UserRepository.class);

        // Définir le comportement pour l'objet mock
        when(mockRepository.getUsername(1)).thenReturn("john_doe");

        UserService userService = new UserService(mockRepository);
        
        assertEquals("john_doe", userService.getUsername(1), "L'ID utilisateur 1 devrait être john_doe");
    }
}

Ce mock nous permet de tester UserService sans avoir besoin d’un véritable UserRepository, concentrant le test sur la logique au sein de UserService lui-même.