Skip to content
Learni
View all tutorials
Développement Java

Comment utiliser Mockito pour tests unitaires Java en 2026

Introduction

Mockito est la bibliothèque la plus populaire pour créer des mocks en Java. Elle permet d'isoler les classes testées de leurs dépendances externes. Dans ce tutoriel, vous allez apprendre à configurer Mockito, créer des mocks et écrire des assertions claires. Les tests unitaires deviennent ainsi plus rapides et plus fiables. Chaque concept est illustré par du code complet que vous pouvez copier directement.

Prérequis

  • JDK 17 ou supérieur
  • Maven ou Gradle
  • Connaissances de base en Java et JUnit 5
  • IDE comme IntelliJ IDEA ou VS Code

Ajouter la dépendance Maven

pom.xml
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.11.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>5.11.0</version>
    <scope>test</scope>
</dependency>

Ces dépendances ajoutent Mockito et son intégration JUnit 5. La portée test garantit qu'elles ne sont présentes qu'en phase de test.

Créer la classe à tester

UserService.java
public class UserService {
    private final UserRepository repository;

    public UserService(UserRepository repository) {
        this.repository = repository;
    }

    public String getUserName(Long id) {
        return repository.findById(id).getName();
    }
}

Cette classe simple dépend d'un repository. Nous allons la tester en mockant le repository pour éviter tout accès base de données.

Écrire le test avec @Mock

UserServiceTest.java
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
class UserServiceTest {

    @Mock
    private UserRepository repository;

    @InjectMocks
    private UserService service;

    @Test
    void shouldReturnUserName() {
        // test à compléter
    }
}

L'annotation @ExtendWith active Mockito. @Mock crée un mock et @InjectMocks injecte automatiquement ce mock dans UserService.

Configurer le comportement du mock

UserServiceTest.java
import static org.mockito.Mockito.when;

@Test
void shouldReturnUserName() {
    User user = new User(1L, "Alice");
    when(repository.findById(1L)).thenReturn(user);

    String name = service.getUserName(1L);

    assertEquals("Alice", name);
}

La méthode when(...).thenReturn(...) définit le comportement du mock. Le test devient prévisible et indépendant de la base de données.

Vérifier les interactions

UserServiceTest.java
import static org.mockito.Mockito.verify;

@Test
void shouldCallRepositoryOnce() {
    service.getUserName(1L);
    verify(repository).findById(1L);
}

verify() permet de s'assurer que le mock a bien été appelé avec les bons arguments. C'est essentiel pour tester les comportements.

Bonnes pratiques

  • Utilisez @Mock et @InjectMocks pour plus de lisibilité
  • Nommez clairement vos tests avec should...
  • Vérifiez uniquement les interactions importantes
  • Évitez les mocks trop complexes qui cachent la logique réelle
  • Gardez vos tests indépendants les uns des autres

Erreurs courantes à éviter

  • Oublier @ExtendWith(MockitoExtension.class) provoque des NullPointerException
  • Appeler verify() avant d'exécuter la méthode testée
  • Utiliser des mocks pour tester la logique interne au lieu d'isoler les dépendances
  • Ne pas réinitialiser les mocks entre les tests

Pour aller plus loin

Découvrez nos formations Learni pour approfondir les tests avancés avec Mockito et Spring Boot.