Ich habe eine Methodeein Verfahren Mocking die Ausnahme auslöst
Service.class
Public void foo() throws SchedulerException{
..........
}
Test.class
Public void testExample(){
Mockito.doThrow(SchedulerException.class).when(f.foo());
}
Compiler fragt mich entweder einen try/catch zu setzen oder wirft for testExample() Gibt es eine andere Möglichkeit, das gleiche zu erreichen?
Ich nehme an, dass 'SchedulerException'' 'RuntimeException' nicht verlängert? In diesem Fall muss Ihre Testmethode "throw SchedulerExcpetion" deklarieren. Es gibt keinen anderen Weg, um das zu erreichen, was Sie wollen, da Java das Catch-or-Throws-Prinzip erzwingt. die einzige Ausnahme (Wortspiel) dazu sind 'RuntimeException's (weil niemand wirklich jeden Array-Zugriff in einen try-catch-Block einschließen möchte ...) – Turing85
Und nur für Annotationszwecke, fügen Sie möglicherweise auch' @Test hinzu (expected = SchedulerException.class) 'falls das oben der Fall ist. – Ishnark
Wenn der Code innerhalb des Tests eine Ausnahme auslöst, bedeutet dies, dass der Test fehlschlägt. Daher ist es besser, 'throws SchedulerException' auf' testExample' zu setzen (Sie müssen es nicht setzen, wenn Ihre Ausnahme 'RuntimeException' erweitert): der Test wird fehlschlagen, wenn die Ausnahme ausgelöst wird. Wenn der Zweck des Tests darin besteht, zu testen, dass die Ausnahme ausgelöst wird, würden Sie try-catch verwenden, aber ich denke, das ist nicht Ihr Fall. –