Úvod do testování v Javě
Maria Milusheva
Senior Software Engineer
Dva klíčové pojmy:
Unit – nejmenší testovatelná část aplikace, například metoda
Unit testování – test zaměřený na ověření správnosti jedné „jednotky" kódu izolovaně od ostatních částí aplikace
Poznámky:
Unit testování se týká dílčích částí logiky, nikoli celku
Jiné typy testování se zaměřují na celek (např. integrační testování)
JUnit nese název podle svého primárního využití – unit testování



assertTrue() ověřuje, že výraz je pravdivý: List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // No error
assertFalse() ověřuje opak:List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // No error
Proměnné s hodnotou null mohou způsobit NullPointerException!
Metody assertNull() a assertNotNull() ověřují, zda je proměnná null nebo není
Typické použití: ověření, že načtená hodnota není null
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// No errors
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Předpokládejme, že chceme ověřit, zda je vyvolána výjimka ArrayIndexOutOfBoundsException:
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit nabízí více způsobů, jak to provést!
JUnit poskytuje assertThrows(), ale využívá pokročilou syntaxi Javy (lambda výrazy)
Lze použít assertInstanceOf() takto:
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Pass the expected class of the exception and the exception itself
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Typický projekt obsahuje stovky unit testů
Měly by být jednoduché a snadno srozumitelné
Měly by mít výstižné názvy, aby bylo na první pohled zřejmé, co selhalo
Například: methodUnderTest_expectedBehavior_conditions()
Úvod do testování v Javě