AssertJ pour Java : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

AssertJ pour Java : Guide complet des Fluent Assertions

1. Qu'est-ce que c'est et pourquoi l'utiliser ?

AssertJ est une bibliothèque puissante de fluent assertions (assertions fluides) pour le langage Java, conçue pour écrire des tests lisibles, expressifs et auto-documentés. Contrairement à JUnit ou TestNG standard, qui ne fournissent que des méthodes basiques comme assertEquals(a, b), AssertJ propose un API riche avec des chaînages d'appels, rendant le code des tests similaire à un langage naturel. Par exemple, au lieu de assertTrue(list.contains("foo")), vous écrivez assertThat(list).contains("foo").

Pourquoi l'utiliser ? Premièrement, AssertJ améliore considérablement la lisibilité des tests. Quand un développeur voit assertThat(result).isNotNull().hasSize(5).contains("expected"), il comprend immédiatement ce qui est vérifié : le résultat n'est pas null, sa taille est de 5, et il contient la chaîne "expected". Deuxièmement, AssertJ fournit des messages d'erreur détaillés. Au lieu d'un ennuyeux "expected true but was false", vous obtenez "Expected list to contain 'foo' but could not find it in [bar, baz]". Troisièmement, la bibliothèque prend en charge de nombreux types de données : collections, chaînes, nombres, dates, fichiers, exceptions et même des objets personnalisés.

AssertJ est particulièrement utile dans les projets où la maintenabilité des tests est cruciale. Grâce à son API fluide, les tests deviennent moins fragiles lors du refactoring, car les chaînes de méthodes sont faciles à modifier. La bibliothèque est activement développée, possède une excellente documentation et est largement utilisée dans l'industrie (Spring, Hibernate, Netflix, etc.).

2. Installation

AssertJ est distribué via Maven Central. Pour l'utiliser dans votre projet, ajoutez la dépendance dans votre fichier pom.xml (Maven) ou build.gradle (Gradle).

Maven

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.25.3</version> <!-- Vérifiez la version actuelle sur Maven Central -->
    <scope>test</scope>
</dependency>

Gradle

testImplementation 'org.assertj:assertj-core:3.25.3'

Si vous utilisez JUnit 5, aucune dépendance supplémentaire n'est nécessaire. AssertJ fonctionne également sans problème avec JUnit 4. Assurez-vous que la version d'AssertJ est compatible avec votre version de Java (la version 3.x nécessite Java 8 ou supérieur).

3. Démarrage rapide — exemple minimal fonctionnel

Après avoir ajouté la dépendance, vous pouvez immédiatement commencer à utiliser AssertJ. La méthode principale est assertThat(), qui prend un objet et retourne l'objet d'assertion correspondant.

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

public class QuickStartTest {

    @Test
    void testSimpleAssertion() {
        String name = "AssertJ";
        
        // Assertion de base
        assertThat(name)
            .isNotNull()
            .isNotEmpty()
            .startsWith("Ass")
            .endsWith("J")
            .hasSize(7);
        
        // Vérification de nombres
        int number = 42;
        assertThat(number)
            .isPositive()
            .isGreaterThan(40)
            .isLessThan(50);
        
        // Vérification de collections
        var list = java.util.List.of("a", "b", "c");
        assertThat(list)
            .hasSize(3)
            .contains("a", "b")
            .doesNotContain("z");
    }
}

Cet exemple illustre l'idée clé : une chaîne de méthodes, chacune retournant le même objet d'assertion, permettant d'écrire des vérifications séquentielles. Si une assertion échoue, le test échoue avec un message clair.

4. Méthodes/fonctions/classes principales

AssertJ propose des centaines de méthodes. Voici les 8 plus fréquemment utilisées avec leurs signatures, descriptions et exemples.

4.1. isEqualTo

Recommendations