JUnit - 6.4 @ValueSource : tester une méthode avec plusieurs valeurs

Un test paramétré lance la même logique de test avec plusieurs valeurs. @ValueSource fournit ces valeurs à la méthode de test. Cette leçon, destinée aux débutants, présente le principe étape par étape.

Le principe du test paramétré

Plutôt que d'écrire un test par valeur, on écrit une seule méthode de test. JUnit l'exécute ensuite une fois pour chaque valeur fournie. Chaque exécution reçoit donc une valeur différente.

Ce fonctionnement permet de vérifier qu'une méthode se comporte bien avec différentes données d'entrée, sans dupliquer le code du test.

Mettre en place le test

Première étape : vérifiez que la dépendance JUnit Jupiter est présente dans votre projet Java. La vidéo indique qu'elle est en général déjà ajoutée.

Ensuite, annotez la méthode avec @ParameterizedTest. Placez @ValueSource au-dessus de cette méthode, et indiquez le type des valeurs. Pour des chaînes de caractères, la vidéo utilise les valeurs Apple, Banana et Cherry.

  • Ajouter la dépendance JUnit Jupiter.
  • Annoter la méthode avec @ParameterizedTest.
  • Ajouter @ValueSource avec le type string et les valeurs.
  • Déclarer un paramètre pour recevoir chaque valeur.

Écrire la logique du test

Le paramètre reçoit une valeur à chaque exécution. La logique du test utilise donc ce paramètre comme une variable ordinaire.

Les prochains cours présentent les autres annotations, puis la pratique avec @ValueSource.

En résumé

@ValueSource fournit plusieurs valeurs à un test paramétré. Une seule méthode de test est écrite, puis exécutée pour chaque valeur. Le paramètre reçoit la valeur courante à chaque exécution. Ce principe permet de tester davantage de cas avec un code plus court.

Points clés

  • @ValueSource fournit plusieurs valeurs à une même méthode de test.
  • @ParameterizedTest indique que la méthode reçoit des paramètres.
  • Le test est exécuté une fois par valeur.
  • Le paramètre reçoit une valeur différente à chaque exécution.
  • La dépendance JUnit Jupiter doit être présente dans le projet.

Questions fréquentes

Quel est l'intérêt de @ValueSource ?

Il permet de tester une méthode avec plusieurs valeurs sans écrire un test distinct pour chacune.

Faut-il écrire une méthode de test par valeur ?

Non. Une seule méthode suffit. JUnit l'exécute automatiquement pour chaque valeur fournie par @ValueSource.

Quelles annotations seront vues ensuite ?

La vidéo annonce que les prochains cours présenteront les autres annotations, puis la pratique avec @ValueSource.