Uni-Logo

Programmieren in Java (SS 2017): JUnit

JUnit wird in der Vorlesung zu w05 am 29.5. besprochen. Um jetzt schon mit w05 beginnen zu können, finden Sie hier einige Informationen zum Schreiben und Ausführen von JUnit4 Tests.

Achtung: Wir verwenden JUnit Version 4

Einführung

Dieses Tutorial beschreibt kurz wie eine typische, einfache Testklasse aufgebaut ist. Testklassen dieser Art werden für w05 benötigt.

Ordnerstruktur

Eine bewährte Ordnerstruktur für Unittests ist die folgende:

<project>/src/<package>/<Class>.java
         /test/<package>/<Class>Test.java   <-- enthält @Test-Methoden
      

Hier ist ein konkretes Beispiel für w05/subsequence:

subsequence/src/subsequence/Main.java
           /test/subsequence/MainTest.java <-- Test-Klasse für Main. Enthält @Test-Methoden
      

Tests ausführen in IntelliJ

Die Projekte von w05 sind alle schon für JUnit konfiguriert. Unten wird beschrieben wie die Konfiguration für ein frisches Projekt funktioniert

  • Betrachten wir das Projekt subsequence
    Projektstruktur
    Gemäß der JUnit-Ordnerstruktur enthält die Klasse test/subsequence/MainTest die Testmethoden.
    Testklasse
  • Durch Rechtsklick auf die Klasse MainTest und auswählen von run werden die Testmethodenausgeführt.
  • Es erscheint ein Fenster mit dem Ergebnis der Tests. So wird beispielsweise ein negatives Ergebnis angezeigt:
    Fehlschlagende Tests
    Ist der Test erfolgreich, sieht die Anzeige folgendermaßen aus:
    Erfolgreiche Tests

Konfiguration eines IntelliJ-Projekts für JUnit4

Betrachten wir ein normales IntelliJ-Projekt ohne Testfälle:

Projekt ohne Testfälle

Zunächst muss ein Testordner hinzugefügt und als solcher markiert werden. Dazu erstellen Sie im Projekt ein neues Verzeichnis test und markieren als anschließend als Testordner durch Rechtsklick -> Mark Directory as -> Test Sources Root. Der Testordner sollte nun grün erscheinen.

Projekt mit Testordner

Zum Erstellen einer ersten Testklasse können Sie im Editorfenster (!) auf den Namen der Klasse klicken. Es erscheint ein Glühbirnen-Icon.

Glühbirnen-Icon

Beim Klicken auf das Icon erscheint ein Menü. Dort Create Test auswählen. Es erscheint daraufhin ein Dialog.

Create Test Dialog

Wählen Sie zunächst im Menü Testing library den Eintrag JUnit4. Klicken Sie dann auf den Button Fix und anschließend Ok. Wenn Sie in der Liste Member Methoden auswählen, wird IntelliJ auch entsprechende Templates für Testmethoden erstellen. JUnit ist nun konfiguriert und Sie können den Dialog mit Ok beenden. Es sollte sich die Klasse MainTest.java öffnen, die schon alle erforderlichen imports enthält und Sie können mit dem Schreiben von Testmethoden beginnen.

Tests ausführen auf der Kommandozeile

Im offiziellen JUnit-Tutorial ist beschrieben, wie die Tests auf der Kommandzeile ausgeführt werden. Es sei hier aber noch kurz erwähnt, wie man die Dateien in src und test gleichzeitig in ein gemeinsames bin Verzeichnis compiliert. Angenommen wir befinden uns im Projektordner subsequence:

$> mkdir -p bin
$> javac -cp JUNIT4.jar src/subsequence/*.java test/subsequence/*.java -d bin
      

Ersetzen Sie JUNIT4.jar mit dem Pfad zu der JUnit4 jar auf Ihrem System.

Zum Ausführen der Tests (siehe auch das JUnit-Tutorial):

$> java -cp bin:JUNIT4.jar:HAMCREST.jar src/subsequence/*.java test/subsequence/*.java org.junit.runner.JUnitCore TESTCLASSE
          

Ersetzen Sie JUNIT4.jar und HAMCREST.jar mit dem Pfad zu der JUnit4 jar und der hamcrest-core jar in ihrem System. Ersetzen Sie TESTCLASSE durch den Namen der Klasse, die die Test-Methoden enthält, z.B. sequence.MainTest