Tesztelés
A tesztelésnek sok módszere létezik (például integrációs teszt, felhasználói teszt, formális helyességbizonyítás, ...), ezek közül a legelterjedtebb az egységteszt.
Egységteszt
Program legkisebb önálló részeinek funkcionális helyességét ellenőrzik. Egység alatt érthetünk egy metódust egy osztályt, vagy akár egy teljes modult is.
Az egységteszteknek nem lehetnek külső függőségei (például fájlrendszer, adatbázis, hálózat).
Fekete dobozos megközelítést használ, azaz csak az adott egység nyilvános interfészét használja.
Tesztvezérelt fejlesztési módszer (először tesztek és azokhoz írjuk meg a kódot).
JUnit
Teszt keretrendszer Java nyelvhez. A tesztesetek tipikusan három részből állnak:
- Arrange (teszteset előkészítése)
- Act (tesztelendő funkció használata)
- Assert (kapott eredmény vizsgálata).
class ListTest {
@Test // teszteket annotálni kell
void test() {
List<Integer> list = new ArrayList<>(); // Arrange
int size = myList.size(); // Act
assertEquals(0, size); // Assert (expected, actual)
}
}
Az eredmény vizsgálatára több metódus is használható:
assertEquals(expected, actual)
egyenlőségvizsgálatequals
metódus alapjánassertTrue(actual)
ésassertFalse(actual)
logikai egyenlőségvizsgálatassertArrayEquals(actuals)
tömb egyenlőségvizsgálatassertNull(actual)
ésassertNotNull(actual)
null
vizsgálatassertThrows()
lsassertNotThrows()
kivételdobás vizsgálata pédáulassertThrows(IllegalArgumentException.class, () -> { ... })
Lehetőségünk van a teszteset manuális megbuktatására is a fail()
metódussal.
Egy tesztesetben több assert
-et is elhelyezhetünk a teszteset futtatási azonban az első sikertelen assert
-nél meg fog állni.
Ha mégis le szeretnénk futtatni az összes vizsgálatot lehetőségünk van az assert
-eket egy assertAll()
-ba csomagolni:
@Test
void test() {
assertAll(
() -> assertEquals(1, myList.size()),
() -> assertEquals(123, myList.get(0))
);
}