JUnit 4 Tutorial

Nachdem Junit 4 in eclipse eingebunden wurde kann es benutzt werden, um Methoden automatisiert zu testen.

Eine einfache Klasse mit einer sehr einfachen Methode.
BasicArithmetics – Klasse.

package ingoreschke;
 
public class BasicArithmetics {
	/*Just a method to calculate the sum of 2 ints*/
	public static int sumInt(int val1, int val2){
		return val1 + val2;
	}
}

Die statische Methode sumInt(int val1, int val2) der Klasse soll 2 beliebige int Werte addieren.
Ob diese Methode korrekt funktioniert muß getestet werden.
7 = 3+4;
Erwartet wird, wenn der Methode 3, und 4 übergeben wird, dass sie 7 zurückliefert.
Nun die Testklasse und Testmethode dazu.
BasicArithmeticTest

package ingoreschke;
 
import org.junit.Assert;
import org.junit.Test;
 
public class BasicArithemticsTest {
	/*test whether the method sumInt() calculates the sum of 3+4=7*/
	@Test
	public void testSumInt(){
		Assert.assertEquals("Result of Sum", 7, BasicArithmetics.sumInt(3, 4) );
	}
}

Um den JUnit Test durchzuführen

  • rechte Maustaste auf die Testklasse (BasicArithmeticsTest)
  • Run As wählen
  • JUnit Test

In der JUnit View sollte so etwa zu sehen sein.

Grün = Test bestanden.

Nun erweitern wir die BasicArithmetic – Klasse um eine Methode die 2 int Werte differenziert.
Da die Differenz 2er natürlicher Zahlen auch gebrochene Zahlen hervorbringen kann geben wir double zurück.

/*Just calculate the difference between 2 ints*/
public static double diffInt(int val1, int val2){
	return val1/val2;			
}

Eine Testmethode dazu 5=10/2;

 /*test the method diffInt() */
@Test
public void testDiffInt(){
	Assert.assertEquals("Difference between 10 and 2", 5, BasicArithmetics.diffInt(10, 2),1);
}

Dies ist einfach und sollte auch mit grün druchlaufen.
Da auch gebrochene Zahlen entstehen können wird auch das getestet.

@Test
public void testDiffInt2(){
	Assert.assertEquals("Difference between 9 and 2", 4.5, BasicArithmetics.diffInt(9, 2),1);
}

Diese Methode wird auch mit Grün = Bestanden quittiert.
Hier sehen wir nun schon den Vorteil von automatisierten Tests gegenüber der “standard main – Methode.Wo manuell das Ergebniss kontrolliert werden muß. Diese JUnit tests können beliebig of durchgeführt werden.

Um gute Tests zu schreiben gehört es dazu, so genannte Bad Tests zu schreiben.
D.h. Ein Test gilt als bestanden wenn die zu testene Methoden einen vorhergesagten Fehler schmeißt.
In unseren Beispiel bei der Division durch 0.

@Test
public void testDiffInt3(){
	BasicArithmetics.diffInt(10,0);
}

schlägt also wie erwartet Fehl (Rot).
Im Fehler Trace – View kann man übrigens den Stacktrace sehen.

Damit der Test als bestanden gilt muß der Testmethode gesagt werden das wir diese Exception erwarten.
Dies tut man in der Annotation
@Test(expected = ArithmeticException.class)

@Test(expected = ArithmeticException.class)
	public void testDiffInt3(){
		BasicArithmetics.diffInt(10,0);
	}

Nun ist auch dieser Test bestanden.

Hier nochmal der komplette Sourcecode
BasicArithmetics

package ingoreschke;
 
import javax.print.attribute.standard.Finishings;
 
public class BasicArithmetics {
 
	/*Just a method to calculate the sum of 2 ints*/
	public static int sumInt(int val1, int val2){
		return val1 + val2;
	}
 
	/*Just calculate the difference between 2 ints*/
	public static double diffInt(int val1, int val2){
		return val1/val2;			
	}
}

BasicArithmeticsTest.java

package ingoreschke;
 
import org.junit.Assert;
import org.junit.Test;
 
public class BasicArithemticsTest {
 
	/*test whether the method sumInt() calculates the sum of 3+4=7*/
	@Test
	public void testSumInt(){
		Assert.assertEquals("Result of Sum", 7, BasicArithmetics.sumInt(3, 4) );
	}
	/*test the method diffInt() */
	@Test
	public void testDiffInt(){
		Assert.assertEquals("Difference between 10 and 2", 5, BasicArithmetics.diffInt(10, 2),1);
	}
 
	@Test
	public void testDiffInt2(){
		Assert.assertEquals("Difference between 9 and 2", 4.5, BasicArithmetics.diffInt(9, 2),1);
	}
	@Test(expected = ArithmeticException.class)
	public void testDiffInt3(){
		BasicArithmetics.diffInt(10,0);
	}
}

sourcecode als zip – Datei

weiterführende Links:

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>