« Un code sans tests, c'est du legacy » : pourquoi vous devriez commencer dès aujourd'hui
\n\nImaginez : vous avez écrit une application en Java. Elle fonctionne. Mais vous avez peur d'y toucher, car un faux mouvement et tout s'effondre. Cela vous dit quelque chose ? Bienvenue dans le monde où le test Java n'est pas un caprice, mais une compétence de survie.
\n\nDe nombreux développeurs débutants remettent les tests à plus tard. « D'abord, j'apprends à écrire du code, ensuite je m'y mets ». Mais la vérité est que les tests unitaires Java ne sont pas une charge supplémentaire, mais votre filet de sécurité. Ils vous obligent à écrire un code de meilleure qualité, modulaire et compréhensible. Et oui, les employeurs apprécient beaucoup les développeurs qui savent couvrir leur code avec des tests.
\n\nDans cet article, nous allons voir par où commencer le test Java pour un débutant. Vous découvrirez les outils principaux — JUnit et Mockito, écrirez vos premiers tests et comprendrez comment ne pas tomber dans le « test pour le test ». C'est parti !
\n\nÉtape 1 : Configuration de l'environnement — votre premier banc de test
\n\nAvant d'écrire des tests, il faut préparer l'environnement. Bonne nouvelle : pour l'automatisation des tests Java, vous n'avez besoin de rien d'extraordinaire. Tout ce que vous avez déjà — JDK et IDE (IntelliJ IDEA ou Eclipse) — suffit.
\n\nMaven ou Gradle — choisissez votre outil de build
\n\nLes projets Java modernes se passent rarement d'un système de build. Nous utiliserons Maven — c'est le standard de facto pour la plupart des projets. Voici un pom.xml minimal avec les dépendances pour les tests :
<dependencies>\n <!-- JUnit 5 — framework principal pour les tests -->\n <dependency>\n <groupId>org.junit.jupiter</groupId>\n <artifactId>junit-jupiter-api</artifactId>\n <version>5.10.0</version>\n <scope>test</scope>\n </dependency>\n \n <!-- Mockito pour créer des objets mock -->\n <dependency>\n <groupId>org.mockito</groupId>\n <artifactId>mockito-core</artifactId>\n <version>5.6.0</version>\n <scope>test</scope>\n </dependency>\n</dependencies>\n\nNotez le <scope>test</scope> — ces bibliothèques ne seront pas incluses dans le build final de l'application, elles ne sont nécessaires que pour exécuter les tests.
Étape 2 : JUnit — votre premier vrai test
\n\nJUnit est le fondement sur lequel repose tout le test Java. Avec lui, vous écrivez des tests unitaires : vous vérifiez le fonctionnement d'une méthode ou d'une classe en isolation.
\n\nÉcrire notre premier test
\n\nSupposons que nous ayons une simple calculatrice :
\n\npublic class Calculator {\n public int add(int a, int b) {\n return a + b;\n }\n \n public int divide(int a, int b) {\n if (b == 0) {\n throw new IllegalArgumentException("Division par zéro impossible !");\n }\n return a / b;\n }\n}\n\nÉcrivons maintenant un test pour elle. Créez une classe dans le dossier src/test/java :
import org.junit.jupiter.api.Test;\nimport static org.junit.jupiter.api.Assertions.*;\n\nclass CalculatorTest {\n \n private final Calculator calculator = new Calculator();\n \n @Test\n void testAdd() {\n // Arrange (préparation)\n int a = 2;\n int b = 3;\n \n // Act (action)\n int result = calculator.add(a, b);\n \n // Assert (vérification)\n assertEquals(5, result, "2 + 3 doit être égal à 5");\n }\n \n @Test\n void testDivideByZero() {\n // Vérifie que la méthode lève une exception\n assertThrows(IllegalArgumentException.class, \n () -> calculator.divide(10, 0));\n }\n}\n\nLancez le test — la barre verte dans l'IDE vous dira que tout fonctionne. Félicitations, vous venez de faire le premier pas dans le unit testing Java.