Introducere în testarea în Java
Maria Milusheva
Senior Software Engineer
Două concepte cheie:
Unitate - cea mai mică parte testabilă a unei aplicații, de exemplu o metodă
Testare unitară - un test care verifică corectitudinea unei singure „unități" de cod, în izolare față de restul aplicației
Note:
Testarea unitară vizează fragmente mici de logică, nu imaginea de ansamblu
Alte tipuri de testare vizează imaginea de ansamblu (ex. testarea de integrare)
JUnit își primește numele de la principalul său caz de utilizare: testarea unitară



assertTrue() verifică dacă o condiție este adevărată: List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // No error
assertFalse() verifică opusul:List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // No error
Variabilele null pot genera NullPointerException!
Aserțiuni pentru verificarea valorilor null - assertNull() și assertNotNull()
Caz frecvent: verificarea că o valoare recuperată nu este null
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// No errors
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Să presupunem că vrem să verificăm dacă se aruncă un ArrayIndexOutOfBoundsException:
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit oferă mai multe modalități de a face acest lucru!
JUnit oferă assertThrows(), dar aceasta folosește sintaxă Java avansată (expresii lambda)
Se poate folosi assertInstanceOf() astfel:
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Pass the expected class of the exception and the exception itself
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Un proiect tipic conține sute de teste unitare
Acestea trebuie să fie ușoare și ușor de înțeles
Trebuie să aibă nume descriptive, pentru a identifica rapid problema în caz de eșec
De exemplu: methodUnderTest_expectedBehavior_conditions()
Introducere în testarea în Java