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:
- Mit rechter Maustaste auf die Klasse in der Projektliste klicken.
- New|JUnit Test Case anklicken.
- 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.
- 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.
- Es erscheint ein neuer Dialog, der darauf hinweist, dass JUnit nicht im Build Path liegt und schlägt vor, dies zu ändern.
- Mit OK geben Sie Eclipse diesbezüglich freie Hand und Eclipse erledigt das für Sie.
- 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
- fail(String): Löst eine Fehlermeldung aus, wenn ein Zustand erreicht wurde, der definitiv fehlerhaft ist.
- assertTrue(wahr): Die Methode erwartet, dass der Parameter true ist. Typischerweise werden darin die Ergebnisse der zu prüfenden Methoden abgefragt.
- assertFalse([message,] boolean condition): Diese Methode erwartet, dass das Ergebnis false ist.
- assertEquals(erwartet, ergebnis): Die Methode prüft, ob die beiden Parameter den gleichen Wert haben.
- assertEquals(erwartet, ergebnis, abweichung): Diese Methode prüft, ob das Ergebnis in einem gewissen Toleranzbereich des Wunschergebnisses liegt.
- assertNull(referenz): Wenn die Referenzvariable nicht null ist, scheitert die Methode.
- assertNotNull(referenz): An dieser Stelle sollte die Referenz ungleich null sein, damit die Methode nicht scheitert.