Zur Installation von JUnit muss das heruntergeladene Zip-File in einem beliebigen Ordner entpackt werden. In diesem Ordner befindet sich eine JAR-Datei (junit-4.5.jar), diese Datei muss in die Pfadvariable des Systems integriert werden.
export PATH=$PATH:/verzeichnis/zum/junit4.5/junit-4.5.jar
eingeben.
ACHTUNG: der Pfad wird nur für die aktuelle Sitzung gesetzt./home/user/.bashrc
, export PATH=$PATH:/verzeichnis/zum/junit4.4/junit-4.4.jar
set classpath=%classpath%;INSTALL_DIR\junit-4.4.jar;INSTALL_DIR
Diese Schritte reichen aus, um JUnit auf einem System zu installieren. Um die Installation zu testen kann folgender Befehl in einer Konsole
eingegeben werden [java org.junit.runner.JUnitCore org.junit.tests.AllTests]
. Mit diesem Aufruf werden mitgelieferte JUnit-Tests
ausgeführt, um zu zeigen, dass JUnit korrekt installiert wurde. Diese Tests sollten alle korrekt durchlaufen. Zusätzlich besteht die
Möglichkeit, JUnit in Eclipse zu verwenden, wie JUnit in Eclipse genutzt werden kann, wird im nächsten Abschnitt beschrieben.
Ein neues Java-Projekt erstellen oder ein schon bestehendes öffnen bzw. auswählen. Auf "Project" --> "Properties"
klicken, "Java Build Path", "Libraries" auswählen, und auf "Add External JARs" klicken.
Jetzt zu junit-4.5.jar
navigieren und auswählen. "Okay" drücken. Anschließend kann eine neue
JUnit-Testklasse erstellt werden.
Als einführendes Beispiel werden verschiedene If-Bedingungen und Zahlenberechnungen getestet (Fakultät und Fibonacci Zahlen).
Beim Anlegen der Testklassen in Eclipse hat sich von der Version 3.8 zu 4.5 nichts geändert. Der Aufbau der Testklassen hat sich hingegen
verändert. Die Änderungen werden im letzten Abschnitt beschrieben.
JUnit3.8 Klassen:
JUnit4.5 Klassen:
Zuerst wird eine Methode benötigt die getestet werden soll. In diesem Beispiel wurdeTestBeideWahr();
aus der Klasse
WahrFalsch.java
gewählt.
Diese einfache Methode überprüft ob zwei Boolean-Werte "true" ergeben. Falls dies nicht der Fall ist wird eine Exception geworfen.
public class WahrFalsch {
private String erg = "";
public void TestBeideWahr(boolean a, boolean b) throws Exception{
if(a && b){
erg = "beide wahr";
System.out.println("Beide Wahr");
}
else{
erg = "nicht beide wahr";
throw new Exception("Variablen nicht identisch");
}
}
...
public void setUp();
wird zu Anfang des Testlaufs automatisch ausgeführt und kann, unter anderem, verwendet
werden um Variablen zu initialisieren oder eine Verbindung zu einer Datenbank aufzubauen.public void tearDown();
am Ende jeden Testdurchlaufs, kann der Tester nicht mehr benötigte
Ressourcen freigeben oder offene Datenbankverbindungen trennen.
/*Wird vor jedem Testaufruf ausgeführt*/
@Before
public void setUp() throws Exception {
objWF = new WahrFalsch();
objF = new Fakultaet();
objFib = new Fibonacci();
}
/*Wird nach jedem Testaufruf ausgeführt*/
@After
public void tearDown() throws Exception {
}
protected void setUp() throws Exception {
super.setUp();
objWF = new WahrFalsch();
objF = new Fakultaet();
objFib = new Fibonacci();
}
protected void tearDown() throws Exception {
super.tearDown();
}
test
besitzen mussten.
So gekennzeichnete Methoden werden automatisch ausgeführt.assertTrue();
den zu erwartenden Wert mit dem Rückgabewert der Methode objWF.getSring();
.
Sind beide Werte gleich, war der Test ein Erfolg, ansonsten schlägt dieser Fehl und die überprüfte Methode muss überarbeitet werden.
// Testet ob beide Variablen wahr sind
public void testWahrFalsch1(){
String expected = "beide wahr";
try{
objWF.TestBeideWahr(true, true);
}catch (Exception e) {
fail("TestWahrFalsch1 fehlgeschlagen");
e.printStackTrace();
}
assertEquals(expected, objWF.getString());
}
// Testet ob beide Variablen wahr sind
@Test
public void WahrFalsch1(){
String expected = "beide wahr";
try{
objWF.TestBeideWahr(true, true);
}catch (Exception e) {
fail("TestWahrFalsch1 fehlgeschlagen");
e.printStackTrace();
}
assertEquals(expected, objWF.getString());
}
assertEquals();
können hier gefunden werden.
Mit den Neuentwicklungen von JUnit 4.x wurde die Java Version 1.5 verwendet. JUnit4.x baut im Gegensatz zu JUnit 3.81 auf Annotationen auf,
die ein neues Ausdrucksmittel in der Metaprogrammierung darstellen. In Java bzw. JUnit4.x werden die Annotationen durch ein "@"
eingeleitet und dienen als Hilfsmittel, den Code mit frei wählbaren Anmerkungen zu versehen. JUnit4.x verwendet Annotationen, um
Testfälle als solche zu markieren, dazu wird vor die Methode "@Test" geschrieben. In JUnit 3.8x müssen alle Methoden,
die etwas mit einem Test zu tun haben mit "testXXXXX()" beginnen, damit sie in einen Test mit einbezogen werden.
import junit.framework.TestCase;
import org.junit.Test;
import static org.junit.Assert.*;
public class IntegrationsTest extends TestCase{
@Test
public void testWahrFalsch1(){
...
}
In obigem Beispiel kann man sehr schön erkennen, was sich zwischen den beiden Versionen grundsätzlich geändert hat.
Die durchgestrichenen Programmteile waren für JUnit 3.8x notwendig, der fettgedruckte Programmcode ist nun für JUnit4.x.
Mit der neuen Version von JUnit4.x kommt ein neuer Namensraum [org.junit.*] zum Einsatz, dieser enthält den annotationsbasierten
Code. Das Paket [junit.framework] bleibt in der neuen Version bestehen, es wurden lediglich kleine Änderungen vorgenommen, um
die Aufwärtskompatibilität zu sichern.
Zusätzlich wurde eine neue assert-Methode hinzugefügt, sie trägt den Namen "assertThat" und bekommt zwei Parameter
übergeben. Der erste Parameter ist der tatsächliche Wert (im Gegensatz zu "assertEquals" als ersten Parameter) und
einen sogenannten Matcher. Mit dem Matcher wird die zu testende Bedingung ausgedrückt.
Aus assertEquals(10, list.size());
wird
assertThat(list.size(), is(10));
Um die neue Funktion zu nutzen, müssen die Hamcrest-Pakete eingebunden sein:
import static org.hamcrest.core.Is.is;
Mit JUnit4.x wurden sechs unterschiedliche Annotationen eingeführt: