2013-07-09 20 views
5

Esiste un modo per verificare che sia stata rilevata un'eccezione? Intendo dire che nel mio metodo c'è una situazione in cui dovrei rilevare l'eccezione e nel test voglio verificare che l'eccezione sia stata catturata.Verificare che sia stata rilevata un'eccezione con Mockito e PowerMock

+0

ho dato una risposta, ma ho potuto renderlo più preciso per voi, se si posta il metodo si sta testando. –

risposta

4

Penso che la risposta non sia - forse si potrebbe farcela con qualche intenso dibattito, ma se così fosse, non penso che varrebbe la pena.

Ma penso (senza vedere il metodo), probabilmente si può ancora possibile ottenere una copertura completa del metodo:

  • Se il metodo richiede alcuna azione dopo la cattura l'eccezione, affermare o verificare che quelle azioni è accaduto.

  • Se nessuna azione avviene dopo la cattura l'eccezione, affermare o verificare che tutto ciò che dovevano azioni per accadere, ma sono stati tagliati fuori dalla deroga , non ha accada.

  • infine, (ancora una volta, non vedendo il tuo metodo non so esattamente cosa hai a che fare con) se il metodo è nullo, e non succede nulla dopo la cattura l'eccezione, e l'ultima riga della logica è cosa può lanciare l'eccezione, quindi considerare di rendere il metodo restituire un valore booleano , restituirlo false se l'eccezione viene rilevata e true in caso contrario. Quindi, nel test, creare uno scenario che dovrebbe causare l'eccezione da lanciare e catturare e verificare che il metodo restituisca false.

1

Difficile dare qualche consiglio senza alcun esempio. Ma se l'eccezione non venisse catturata, saliva fino a raggiungere il test e il test falliva, perché veniva lanciata un'eccezione. So che non verifica che sia stato catturato in un blocco specifico ma solo che è stato catturato del tutto.

0

Cosa fa questa eccezione nel programma se non viene rilevato? Se causa il crash del programma, puoi semplicemente eseguire la parte del test di Act all'interno di un blocco try {}. Se lancia un'eccezione puoi prenderlo e fallire il test.

Un'altra opzione, se l'eccezione cacught provoca un metodo da chiamare, dire printToLog() è possibile verfiy che il metodo è stato effettivamente chiamato con i parametri corretti (usando Mockito).

0

Si dovrebbe essere in grado di simulare l'elemento che si desidera generare l'eccezione, in modo che generi l'eccezione e quindi verificare che non ci siano chiamate ad altri metodi che verrebbero richiamati se non si è verificata alcuna eccezione.

Controllare anche lo stato come previsto quando viene generata un'eccezione.

+0

Come si fa a escludere un'eccezione di puntatore nullo? –

Problemi correlati