Exceptions erwarten

Expected Exception - Exceptions erwarten

Im Idealfall werden in einem Unittest alle möglichen Ausführungswege im Code getestet. Im Fall eines Fehlers sollte sichergestellt werden, dass eine bestimmte Exception ausgelöst wird.

Mit einem Assert kann das auftreten einer Exception nicht geprüft werden, da der Punkt der Prüfung im Unittest nicht erreicht würde. Die einzige Möglichkeit dies zu testen wäre ein try/catch Block im Unittest. Da dies jedoch schwierig zu verstehen ist, gibt es eine eigene Annotation dafür Namens „@expectedException“.


In dieser Annotation wird die erwartete Exception definiert und der Testfall ist nur dann grün, wenn die Exception auftritt.


Das folgende Beispiel zeigt eine CalculationService, der die einfachen Operationen „add“ und „devide“ bietet. Der Wert 0 ist für die Methode „devide“ nicht erlaubt, da in der Mathematik eine Division durch 0 nicht erlaubt ist. Aus diesem Grund wird im Faller einer Division durch 0 eine Exception ausgelöst:

Im Testfall wird geprüft, ob der Service bei einer Division mit Null tatsächlich auch eine Exception auslöst. Dies geschiet durch die Annotation „@expectedException InvalidArgumentException“:


Navigation