2013-03-01 9 views
241

Ho un metodo con un tipo di ritorno void. Può anche generare una serie di eccezioni, quindi vorrei testare le eccezioni generate. Tutti i tentativi sono falliti con la stessa ragione:Mockito test un metodo di annullamento genera un'eccezione

Il metodo quando (T) nel tipo Stubber non è applicabile per gli argomenti (void)

Tutte le idee come posso ottenere il metodo di gettare un'eccezione specificata?

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

Eventuali duplicati di [Come fare finta di invalidare metodi con Mockito] (https://stackoverflow.com/questions/2276271/how-to-make-mock-to-void-methods-with-mockito) – Willian

risposta

449

Le parentesi sono posizionate male. È necessario utilizzare

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

e non

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

Questo è spiegato in the documentation

+3

@edwardmlyte Questa incoerenza di Mockito è uno dei motivi per cui ho passato a [MoxieMocks] (https://code.google .com/p/moxiemocks/wiki/MockingLibraryComparison) – Muel

+0

@clement entrambi possono essere utilizzati: http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#5. La creazione di un'eccezione non la butta. –

+1

@JB Nizet Sono totalmente d'accordo con te ma comunque se scrivo doThrow (new Exception()) invece di doThrow (Exception.class), ho il seguente errore quando lancio il mio test; Eccezione prevista com.company.project.exception.ElementNotFoundException ma ottenuta org.mockito.exceptions.base.MockitoException: – clement

Problemi correlati