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.
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
Gemäß der JUnit-Ordnerstruktur enthält die Klassetest/subsequence/MainTest
die Testmethoden. - Durch Rechtsklick auf die Klasse
MainTest
und auswählen vonrun
werden die Testmethodenausgeführt. - Es erscheint ein Fenster mit dem Ergebnis der Tests. So wird beispielsweise ein negatives Ergebnis angezeigt: Ist der Test erfolgreich, sieht die Anzeige folgendermaßen aus:
Konfiguration eines IntelliJ-Projekts für JUnit4
Betrachten wir ein normales IntelliJ-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.
Zum Erstellen einer ersten Testklasse können Sie im Editorfenster (!) auf den Namen der Klasse klicken. Es erscheint ein Glühbirnen-Icon.
Beim Klicken auf das Icon erscheint ein Menü. Dort Create Test
auswählen. Es erscheint daraufhin ein 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 import
s 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