Enhetstesting er testing av de minste enhetene i et program, dvs. teste at metodene i en klasse implementerer ønsket oppførsel. JUnit er et praktisk rammeverk for å gjøre enhetstesting av Java–klasser. Enkelt sagt består enhetstesting med JUnit, også kalt JUnit-testing, i å lage instanser av klassen som skal testes og prøve ulike sekvenser av metodekall og sjekke om verdiene de returnerer stemmer med "fasiten". La oss ta følgende Counter
-klasse som eksempel.
Counter er ment å implementere en teller fra en start-verdi til en slutt-verdi. Hver gang vi caller count()
-metoden, så skal telleren øke med 1, men bare dersom vi ennå ikke har nådd slutt-verdien. Teller-verdien får vi tak i med getCounter()
-metoden.
public class Counter { private int start, end; private pos; public Counter(int start, int end) { this.start = start; this.end = end; } public int getCounter() { return this.pos; } public void count() { if (pos > end) { return; } this.pos = this.pos + 1; } }
Før vi tester Counter
-klassen, må vi formulere oppførselen som testbare utsagn om metode-kall og returverdier. La oss gjøre det for Counter
-klassen:
- Etter at klassen er instansiert med
new Counter(start, end)
skal telleren ha startverdien, med andre ord mågetCounter()
returnerestart
. - Etter et kall til
count()
, skalgetCounter()
returnerestart + 1
, men bare dersom denne verdien er mindre ennend
. - Generelt: dersom
getCounter()
returnerern
ogn
er mindre enn end, så skalcount()
øke telleren og et nytt kall tilgetCounter()
returneren + 1
.