Java: Testen mit JUnit
Willemers Informatik-Ecke
Mit JUnit steht eine Möglichkeit zur Verfügung, Methoden automatisch testen zu können. Die folgende Beschreibung zeigt die Erstellung mit Eclipse.

Testklasse erstellen

Für eine Klasse Rekursion mit den Methoden fakultaet, fibonacci und iterfibonacci soll eine Testklasse erzeugt werden. Diese wird nach Konvention RekursionTest genannt.

Unter Eclipse erzeugen Sie die Testklasse mit folgenden Schritten:

  1. Mit rechter Maustaste auf die Klasse in der Projektliste klicken.
  2. New|JUnit Test Case anklicken.
  3. In dem erscheinenden Dialog muss normalerweise nichts verstellt werden. Hier können aber Stubs erzeugt werden, die für die Vor- und Nachbereitung der Tests verwendet werden können.
  4. Mit Next kann die Übersicht der Methoden der zu testenden Klasse erreicht werden. Hier klickt man alle Methoden an, die getestet werden sollen. Dann erstellt Eclipse den entsprechenden Rumpf.
  5. Es erscheint ein neuer Dialog, der darauf hinweist, dass JUnit nicht im Build Path liegt und schlägt vor, dies zu ändern.
  6. Mit OK geben Sie Eclipse diesbezüglich freie Hand und Eclipse erledigt das für Sie.
  7. Anschließend ist die Testklasse mit den Testmethoden erzeugt.
import static org.junit.jupiter.api.Assertions.*;

class RekursionTest {

    @Test
    void testFakultaet() {
        fail("Not yet implemented");
    }

    @Test
    void testFibonacci() {
        fail("Not yet implemented");
    }

    @Test
    void testIterfibonacci() {
        fail("Not yet implemented");
    }
}

Erster Testlauf

Wenn Sie nun auf diese Klasse einen Run auslössen ([Strg]+[F11], Run oder der grüne Kreis mit dem Dreieck), erscheint in dem Bereich für die Projektliste eine neue Lasche mit JUnit. Dort sehen Sie einen roten Balken und dass drei Methoden gescheitert sind. Das ist die Folge der drei fail-Aufrufe.

Ausprogrammieren der Testmethoden

Die Testmethoden können genutzt werden, um die Methoden zu testen. Wenn es sich um static-Methoden wie in dem Beispiel handelt, können diese einfach über Ihren Klassennamen aufgerufen werden.

Sie können, wenn die Methode einen Fehler findet, die Methode fail mit einem Text als Parameter aufrufen. Alternativ ist auch der Aufruf von assertTrue möglich, der prüft, ob die folgende Bedingung wahr ist.

@Test
void testFakultaet() {
    long wert = Rekursion.fakultaet(5);
    assertTrue(wert==120);
}
Das geht auch kürzer in einer Zeile:
@Test
void testFibonacci() {
    assertTrue(1==Rekursion.fibonacci(1));
}
Und auch mehrere Tests sind möglich. So lassen sich Randbedingungen zusätzlich testen.
@Test
void testIterfibonacci() {
    assertTrue(1==Rekursion.fibonacci(1));
    assertTrue(24157817==Rekursion.iterfibonacci(36));
}

Erfolgreicher Test

Nachdem nun alle Testmethoden implementiert wurden, kann die Testklasse wieder gestartet werden und sollte einen grünen Balken erzeugen.

Übersicht über die Methoden

Links