2013-03-01 11 views
241

Mam metodę z typem zwracanym void. Może również rzutować pewną liczbę wyjątków, więc chciałbym przetestować te wyjątki, które są odrzucane. Wszystkie próby zawiodły z tego samego powodu:Test Mockito metoda pustki rzuca wyjątek

Sposób kiedy (T) w rodzaju Stubber nie dotyczy argumentów (void)

pomysłów w jaki sposób mogę uzyskać metody rzucać określony wyjątek?

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

Możliwy duplikat [Jak zrobić makiety do unieważnienia metod z Mockito] (https://stackoverflow.com/questions/2276271/how-to-make-mock-to-void-methods-with-mockito) – Willian

Odpowiedz

449

Nawiasy są źle umieszczone. Musisz użyć

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

i nie

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

Jest to wyjaśnione w the documentation

+3

@edwardmlyte Ta niespójność Mockito jest jedną z przyczyn przejścia na [MoxieMocks] (https://code.google .pl/p/moxiemocks/wiki/MockingLibraryComparison) – Muel

+0

@clement oba mogą być używane: http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#5. Tworzenie wyjątku nie wyrzuca go. –

+1

@JB Nizet Całkowicie się z tobą zgadzam, ale jeśli piszę doThrow (new Exception()) zamiast doThrow (Exception.class), mam następujący błąd po uruchomieniu testu; Oczekiwano wyjątku com.company.project.exception.ElementNotFoundException, ale dostałem org.mockito.exceptions.base.MockitoException: – clement

Powiązane problemy