Prérequis
Bases solides en Java, compréhension des concepts de test unitaire, familiarité avec Maven ou Gradle.
Durée
2 jours
Contenu Technique de la Formation
Maîtrisez les frameworks de test modernes pour Java : JUnit 5 avec annotations @Test et @ParameterizedTest, Mockito pour les mocks et spies, et AssertJ pour des assertions fluides. Apprenez à tester efficacement avec fixtures, intégration et coverage Jacoco.
- JUnit 5 : annotations @Test, @BeforeEach, @AfterEach, @DisplayName
- @ParameterizedTest, @ValueSource, @CsvSource — tests paramétrés
- Extensions JUnit 5 et lifecycle hooks personnalisés
- Mockito : mock, spy, verify et comportements — When/Then DSL
- ArgumentCaptor, InOrder et assertions avancées avec Mockito
- AssertJ : assertions fluides et conditions — ThenAssertAll, satisfies
Objectifs de la Formation
Les objectifs visés par cette formation sont :
- Écrire des tests JUnit 5 avec @Test, @BeforeEach et lifecycle complet
- Implémenter des tests paramétrés avec @ParameterizedTest et sources variées
- Créer des extensions JUnit 5 personnalisées pour besoins spécifiques
- Configurer Mockito : mock, spy, verify et ArgumentCaptor
- Utiliser AssertJ pour assertions fluides et lisibles
- Intégrer tests d’intégration et mesurer coverage Jacoco
Table des Matières
JUnit 5 : annotations et lifecycle
- Annotations de base : @Test, @BeforeEach, @AfterEach, @BeforeAll
- @DisplayName, @Disabled et tags personnalisés
- Ordre d’exécution, timeouts et assertions de base
- Assertions avancées : assertAll, assertThrows
- Répertoires et organisation des tests
Tests paramétrés avec @ParameterizedTest
- @ParameterizedTest avec @ValueSource pour listes simples
- @CsvSource et @CsvFileSource pour données structurées
- @MethodSource pour générateurs personnalisés
- @ArgumentsSource et convertisseurs d’arguments
- Nommage dynamique avec @DisplayName et placeholders
Extensions JUnit 5 et lifecycle
- Interface Extension et point d’extension
- BeforeAllCallback, BeforeTestExecutionCallback personnalisées
- Injection de paramètres et TestInfo, TestReporter
- Paramètres résolus avec ParameterResolver
- Composition d’extensions et ordre d’exécution
Mockito : mocks, spies et verification
- mock() et Mockito.when().thenReturn() — comportement stubbé
- spy() pour partiels mocking et comportement réel
- verify(), times(), never() et InOrder — vérification d’appels
- ArgumentCaptor pour capturer arguments et assertions
- Matchers : any(), eq(), argThat() — flexibilité dans verification
AssertJ et assertions fluides
- Assertions basiques fluides : isEqualTo(), isNotNull()
- Collections : containsExactly(), anyMatch(), allMatch()
- Chaining d’assertions et soft assertions
- Conditions réutilisables et satisfies()
- Messages d’erreur personnalisés et as() — lisibilité
Tests d’intégration et coverage Jacoco
- Tests d’intégration vs tests unitaires — @SpringBootTest
- Jacoco pour mesurage de couverture de code
- Rapports de couverture et seuils minimums
- Intégration Maven/Gradle avec plugin Jacoco
- Amélioration continue de la couverture et qualité
En Pratique
Écrire des tests JUnit de qualité
- Structure AAA (Arrange, Act, Assert)
- Parameterized tests et repetitions
- Organisation et nommage des tests
Utiliser les mocks et stubs efficacement
- Création et vérification de mocks Mockito
- Gestion des dépendances externes
- Spy et partial mocking
Tester les cas limites et exceptions
- Tests de comportement en erreur
- Gestion des timeouts et ressources
- Matchers avancés pour vérifications
Intégrer TDD dans le cycle de développement
- Ecrire les tests avant le code
- Refactoring et amélioration continus
- Couverture de code et métriques
Modalités et Inscription
Cette formation est proposée selon deux formules pour s'adapter au mieux à vos besoins :
Session régulière
Des sessions sont organisées à intervalles réguliers. Demandez les prochaines dates planifiées pour vous inscrire à la prochaine session.
Sur mesure & intra-entreprise
Vous souhaitez former vos équipes directement dans vos locaux ou adapter le programme technique à votre contexte d'entreprise ? Contactez-nous pour obtenir un devis personnalisé.