JUnit - 4 BeforeEach et AfterEach : préparer et nettoyer les tests

Plusieurs tests ont souvent besoin des mêmes préparatifs, comme une connexion à une base de données. JUnit permet d'exécuter du code avant et après chaque test. Cette leçon présente un exemple avec les annotations @BeforeEach et @AfterEach, et explique leur rôle.

Préparer chaque test avec BeforeEach

La classe de test contient une connexion et un objet user. La méthode setup, annotée avec @BeforeEach, s'exécute avant chaque test. Elle ouvre la connexion à la base de données et crée l'objet user.

Ainsi, chaque test démarre avec le même état. Les tests n'ont pas besoin de répéter cette préparation.

@BeforeEach
void setup() {
    // ouvre la connexion et crée l'objet user
}

Nettoyer après chaque test avec AfterEach

La méthode clean, annotée avec @AfterEach, s'exécute après chaque test. Elle ferme la connexion, libère les ressources utilisées et supprime l'objet user.

Ce nettoyage évite qu'un test influence le suivant. Chaque test repart donc d'une situation propre.

@AfterEach
void clean() {
    // ferme la connexion et supprime l'objet user
}

En résumé

L'annotation @BeforeEach exécute du code avant chaque test. L'annotation @AfterEach exécute du code après chaque test. Dans l'exemple, elles ouvrent puis ferment une connexion à la base de données. Elles évitent aussi les effets de bord entre les tests.

Points clés

  • @BeforeEach exécute une méthode avant chaque test.
  • @AfterEach exécute une méthode après chaque test.
  • La préparation évite de répéter le même code dans chaque test.
  • Dans l'exemple, la connexion à la base de données est ouverte avant chaque test.
  • Le nettoyage ferme la connexion et supprime les objets utilisés.

Questions fréquentes

Pourquoi fermer la connexion après chaque test ?

Une connexion laissée ouverte peut influencer les tests suivants. Le nettoyage garantit que chaque test démarre proprement.

Les noms setup et clean sont-ils obligatoires ?

Non. Ce sont les noms utilisés dans l'exemple. Ce qui compte, c'est l'annotation placée au-dessus de la méthode.

Quelle différence entre les deux annotations ?

@BeforeEach s'exécute avant chaque test, pour préparer. @AfterEach s'exécute après chaque test, pour nettoyer.