Programmierung

Kompilieren und Testen mit Java und JUnit ohne IDE

Ich habe hier einen Laptop, der nicht mehr der Neueste ist, aber noch gut genug, um auf ihm mit Java zu programmieren. Jedoch ist es nicht ganz möglich, hier eine Entwicklungsumgebung zu installieren, da es sonst eeeeeeeewig dauern würde, bis ich hier was gebacken bekomme. Das hat mich dazu veranlasst, eine kleine Umgebung für mich zu schaffen, mit der ich trotzdem die wichtigsten Dinge schaffen kann. Natürlich ist mein Vorgehen für große Projekte nicht ganz zu empfehlen, jedoch für kleine Programme sicher eine akzeptable Lösung (gerade bei Rechnern, die langsamer laufen).

Was habe ich gemacht? Ich habe erst einmal einen Ordner geschaffen, in dem meine JAVA-Projekte liegen sollen. Für jedes neue kleine Projekt, dass ich starte, lege ich einen Unterordner an. Also beispielsweise bin ich gerade dabei, ein kleines Spiel namens Schiffe versenken zu programmieren, darum gibt es im Ordner JAVA einen Unterordner SchiffeVersenken mit allen Klassen zu dem Projekt (sind bisher nicht so viele).

Da ich nicht jedesmal von neuem den Compiler anschmeißen will, habe ich mir eine kleines Batch-Programm geschrieben (Dateiname: make.bat):

@ECHO OFF
CLS
FOR %%i in (*.java) DO (
	FINDSTR /C:"Test" %%i 1>nul
 
	REM ERRORLEVEL = 1 bedeutet, dass die Datei
	REM keine Testklasse beinhaltet
	IF ERRORLEVEL 1 (
		ECHO javac %%i
		javac %%i
	REM Diese Klasse beinhaltet Test im Klassennamen
	REM also wird diese auch mit der JUNIT-Klasse 
	REM kompiliert.
	) ELSE (
		ECHO javac -cp ".;..\lib\junit-4.11.jar" %%i
		javac -cp ".;..\lib\junit-4.11.jar" %%i
	)
)

Was macht dieses Batch-File? Es prüft jedes JAVA-File, ob es mit Test anfängt. Tut es das nicht, wird normal kompiliert. Gibt es eine Datei, die mit Test anfängt, dann soll die JUnit Bibliothek verwendet werden. Dazu habe ich im Ordner JAVA einen weiteren Ordner mit dem Namen lib. Dort befindet sich die junit-4.11.jar-Datei, die für meine Tests notwendig sind. D.h. ich brauche jetzt nur noch einen Befehl zu starten und schon fängt das Kompilieren an (siehe Bild).
Wichtig: Ich habe die Namenskonvention, dass alle Testklassen bei mir mit Test beginnen. Bei diesem Batch-File ist das egal, aber wenn man weiter unten das Test-Batch-File startet, dann müsste man es dementsprechend anpassen.

make-starten-von-command-line

Die Ausgabe des Programms sieht bei mir beispielsweise dann so aus (wie man sieht, habe ich bisher nur eine Testklasse, aber das soll sich noch ändern):

javac FlagPoint.java
javac Point.java
javac Schiff.java
javac Spielbrett.java
javac Spieler.java
javac -cp ".;..\lib\junit-4.11.jar" TestPoint.java

Jetzt möchte ich aber auch die Testklassen laufen lassen, um zu sehen, ob mein Code Fehler hat, die ich nicht beachtet habe. Dazu habe ich mir wieder ein kleines Batch-File geschrieben, das sieht so aus:

@ECHO OFF
CLS
FOR %%f in (*.class) DO (
	FINDSTR /C:"Test" %%f 1>nul
 
	IF NOT ERRORLEVEL 1 (
		ECHO =====================================
		ECHO Teste Klasse %%~nf
		ECHO =====================================
		java -cp ".;..\lib\junit-4.11.jar;..\lib\hamcrest-1.3\hamcrest-core-1.3.jar" org.junit.runner.JUnitCore %%~nf
	)
)

Das sieht jetzt ein wenig komplizierter aus … Was wir hier noch brauchen, ist eine Bibliothek mit dem Namen hamcrest-1.3. Diese habe ich herunter geladen und auch in den lib-Ordner gepackt. Da wir mit dem Befehl java nur Klassen angeben und keine Dateien, muss ich dafür sorgen, dass die Endung .class entfernt wird. Mit

SET SHORT_FILENAME=%%~nf

wird genau das getan und dann rufe ich den Runner von JUnit auf. Dieses Batchfile (Name: test.bat) liegt auch im Ordner JAVA. So kann ich – wie make – mit dem Befehl

../test

aufrufen. Es sollte dann eine Ausgabe wie hier herauskommen:

Teste Klasse TestPoint
JUnit version 4.11
.......
Time: 0,018
 
OK (7 tests)

Ich hoffe, ihr könnt mit den Informationen was anfangen. Falls ihr Fragen habt, stellt sie ruhig.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.