JUnit - 4.1 Maîtriser @BeforeEach et @AfterEach
Dans les tests unitaires, plusieurs tests ont souvent besoin des mêmes préparatifs, comme la création d'un objet. Les annotations @BeforeEach et @AfterEach de JUnit permettent d'exécuter du code avant et après chaque test. Cette leçon explique leur fonctionnement et leur utilité.
@BeforeEach : préparer avant chaque test
Une méthode annotée avec @BeforeEach est exécutée avant chaque méthode de test de la classe. Elle sert à initialiser des ressources, par exemple créer un objet à tester.
Les méthodes annotées avec @BeforeEach ne prennent aucun argument.
@AfterEach : nettoyer après chaque test
Une méthode annotée avec @AfterEach est exécutée après chaque test. Elle sert à nettoyer, par exemple à supprimer des données créées pendant le test, comme des données en base de données.
Aller plus loin avec @BeforeAll et @AfterAll
Les annotations @BeforeAll et @AfterAll s'exécutent une seule fois, avant ou après tous les tests de la classe. Elles seront présentées dans la suite du cours.
En résumé
@BeforeEach exécute du code avant chaque test, et @AfterEach exécute du code après chaque test. Elles évitent de répéter les mêmes préparatifs dans chaque test. Les méthodes annotées ne prennent aucun argument. Les variantes @BeforeAll et @AfterAll s'exécutent une seule fois pour toute la classe.
Points clés
- @BeforeEach exécute une méthode avant chaque test.
- @AfterEach exécute une méthode après chaque test.
- Ces annotations évitent de répéter les mêmes préparatifs dans chaque test.
- Les méthodes annotées ne prennent aucun argument.
- @BeforeAll et @AfterAll s'exécutent une seule fois pour toute la classe.
Questions fréquentes
Faut-il appeler les méthodes @BeforeEach manuellement ?
Non. JUnit les exécute automatiquement avant chaque test.
Quand utiliser @AfterEach ?
Pour nettoyer après un test, par exemple supprimer les données créées pendant le test en base de données.
Quelle est la différence avec @BeforeAll ?
@BeforeAll s'exécute une seule fois avant tous les tests de la classe, alors que @BeforeEach s'exécute avant chaque test.