# Junit Exceptions testen



## Ay Caramba (12. Mai 2008)

Hallo, ich hätte eine Frage bezüglich Junit und wie ich testen kann ob Exceptions geworfen werden.

Ich nehmen mal ein simples Beispiel.


```
public void checkInput(int zahl) throws ArithmeticException{
		if(zahl==0)
			throw new ArithmeticException("ZERO");
```
wenn zahl ist gleich 0, dann eben eine Exception auf den Aufrufer werfen


```
ExceptionTest et=new ExceptionTest();
	
	 public void testCheckForInput(){
		try{
			et.checkInput(0);
			fail("FAIL");
		}catch(ArithmeticException ar){
			
		}		
	}
```

Der code arbeitet soweit gut, doch ich verstehe die andere Variante des Testens nicht:

@Test(expected ArithmeticException) public void CheckForInput(){
et.checkInput(0);
}

hiervon verstehe ich leider nichts:
1) Was bedeutet dieses @Test? Muss ich da extra eine Klasse erstellen?
2) @Test(expected ArithmeticException) ; Wenn ich das hinschreibe, dann wird alles rot unterstrichen

Könnte mir einfach jemand kurz erklären wie es richtig gemacht wird und was welcher Teil des Codes macht?

Benutze Junit4 und eclipse 3.3.2


----------



## Ay Caramba (16. Mai 2008)

weiß jemand wie es geht?


----------



## kama (16. Mai 2008)

Hallo,

war Google zu schwer ?

http://junit.sourceforge.net/doc/faq/faq.htm

MfG
Karl Heinz Marbaise


----------



## Ay Caramba (16. Mai 2008)

Danke, dennoch hilft mir das natürlich überhaupt nicht, da ich ja diese Seite kenne und das Beispiel schon 5x ausgeführt habe.

Nach vielem Lesen und herumprobieren habe ich dann den Fehler entdeckt.

Die Klasse Ext darf kein extends TestCase haben....



```
public class ExceptionTest {
	
	public void checkInput(int zahl) throws ArithmeticException{
	
		if(zahl==1)
			throw new ArithmeticException("ZERO");
		
	}

	public String hallo(String str){
		if(str.equals("hallo"))
			throw new RuntimeException();
		
		return "ok";
	}
}//class
```



```
import org.junit.Test;

public class ExT {
	
		ExceptionTest et=new ExceptionTest();
	@Test (expected=ArithmeticException.class)public void testUn(){
		et.checkInput(1);
	}

	
	@Test(expected=RuntimeException.class)public void testRuntime(){
		et.hallo("hallo");
	}
}
```

jetzt bin ich so weit, dass ich exceptions testen kann, aber in einer eigenen Testklasse, da andere Tests natürlich ein "extends Testcase" brauchen.


----------

