Introductie tot testen in Java
Maria Milusheva
Senior Software Engineer
Twee kernbegrippen:
Unit - het kleinste testbare deel van een applicatie, zoals een methode
Unit-test - een test die de correctheid van één “unit” code verifieert, los van de rest van de applicatie
Notities:
Unit-testen gaat over kleine stukjes logica, niet het grote geheel
Andere testtypes focussen op het grote geheel (bijv. integratie)
JUnit heet zo omdat het primair voor unit-tests is



assertTrue() controleert dat een bewering waar is: List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // Geen fout
assertFalse() controleert het omgekeerde:List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // Geen fout
null-variabelen kunnen tot NullPointerException leiden!
Assertions die checken of een variabele wel of niet null is: assertNull() en assertNotNull()
Veelvoorkomend: controleren dat een opgehaalde waarde niet null is
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// Geen fouten
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Stel, we willen verifiëren dat een ArrayIndexOutOfBoundsException wordt gegooid:
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit biedt meerdere manieren om dit te doen!
JUnit heeft assertThrows(), maar dat gebruikt geavanceerde Java-syntaxis (lambda’s)
Je kunt assertInstanceOf() zo gebruiken:
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Geef de verwachte klasse van de exception en de exception zelf door
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Een typisch project bevat honderden unit-tests
Ze moeten lichtgewicht en makkelijk te begrijpen zijn
Geef ze informatieve namen, zodat je direct ziet wat er misging bij een mislukte test
Bijv.: methodUnderTest_expectedBehavior_conditions()
Introductie tot testen in Java