Ich möchte wissen, warum ich Ausnahme behandeln muss, wenn ich eine void-Methode verspottete, die Ausnahme auslöst.Mockito, Void-Methode mit geprüfter Ausnahme
Zum Beispiel
public class MyObject {
public void call() throws SomeException {
//do something
}
}
Jetzt, wenn ich dies tue,
@Mock
MyObject myObject;
doNothing().when(myObject).call()
führt dies zu Kompilierungsfehler sagen
"error: unreported exception SomeException; must be caught or declared to be thrown"
Ich frage mich, warum ich Ausnahme behandeln müssen für die Methode, die selbst verspottet wird.
Sie müssen nicht damit umgehen. Setzen Sie einfach 'throws Exception' in Ihre Testmethode. Ich markiere alle meine JUnit-Methoden mit "throws Exception" aus Gewohnheit - es gibt keinen Grund, dies nicht zu tun. –
@DawoodibnKareem Wenn ich signalisieren will, dass ein Test Ausnahmen auslösen soll, verwende ich Assertion-Helfer, wie zum Beispiel '@Test (expected = ...)'. Ich versuche, die "throws" -Klausel in der Testverfahrensignatur zu vermeiden, da sie keine nützlichen Informationen über den Test selbst enthielt. –