Introduction aux tests en Java
Maria Milusheva
Senior Software Engineer
Deux notions clés :
Unité : plus petite partie testable d'une application, comme une méthode
Test unitaire : test qui vérifie l'exactitude d'une seule « unité » de code isolée du reste de l'application
Notes :
Le test unitaire vise de petites portions de logique, pas la vue d'ensemble
D'autres types de tests couvrent la vue d'ensemble (p. ex. intégration)
JUnit doit son nom à son principal usage : les tests unitaires



assertTrue() vérifie qu'une affirmation est vraie :List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // Aucune erreur
assertFalse() vérifie l'inverse :List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // Aucune erreur
Les variables null peuvent causer des NullPointerException !
Assertions pour vérifier si une variable est ou non null : assertNull() et assertNotNull()
Cas courant : vérifier qu'une valeur récupérée n'est pas nulle
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// Aucune erreur
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Supposons que vous vouliez vérifier qu'une ArrayIndexOutOfBoundsException est levée :
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit offre plusieurs façons de le faire !
JUnit fournit assertThrows(), mais cela utilise une syntaxe Java avancée (expressions lambda)
Vous pouvez utiliser assertInstanceOf() ainsi :
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Passez la classe attendue de l'exception et l'exception elle‑même
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Un projet typique contient des centaines de tests unitaires
Ils doivent être légers et faciles à comprendre
Donnez-leur des noms parlants pour repérer d'un coup d'œil la cause d'un échec
Par exemple : methodUnderTest_expectedBehavior_conditions()
Introduction aux tests en Java