2013-03-01 13 views
241

Ich habe eine Methode mit einem void Rückgabetyp. Es kann auch eine Reihe von Ausnahmen auslösen, daher möchte ich die ausgelösten Ausnahmen testen. Alle Versuche wurden mit dem gleichen Grund fehlgeschlagen:Mockito Test eine Void-Methode löst eine Ausnahme

Verfahren, wenn (T) in der Art Stubber nicht anwendbar für die Argumente (void)

Irgendwelche Ideen, wie ich die Methode bekommen kann zu werfen eine angegebene Ausnahme?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...)); 
+0

Mögliche Duplikat von [Wie Mock Methoden für ungültig zu erklären mit Mockito machen] (https://stackoverflow.com/questions/2276271/how-to-make-mock-to-void-methoden-with-mockito) – Willian

Antwort

449

Die Klammern sind schlecht platziert. Sie müssen verwenden

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...); 
             ^

und nicht

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...)); 
                   ^

Dies erklärt sich in the documentation

+3

@edwardmlyte Diese Mockito-Inkonsistenz ist einer der Gründe, warum ich zu [MoxieMocks] gewechselt bin (https://code.google .com/p/moxiemocks/wiki/MockingLibraryComparison) – Muel

+0

@clement können beide verwendet werden: http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#5. Wenn Sie eine Ausnahme erstellen, wird sie nicht ausgelöst. –

+1

@JB Nizet Ich stimme Ihnen völlig zu, aber wenn ich doThrow (new Exception()) anstelle von doThrow (Exception.class) schreibe, habe ich den folgenden Fehler, wenn ich meinen Test starte; Erwartete Ausnahme com.company.project.exception.ElementNotFoundException, aber org.mockito.exceptions.base.MockitoException: – clement

Verwandte Themen