Sto provando ad avere uno dei miei oggetti derisi lanciare un'eccezione controllata quando viene chiamato un metodo particolare. Sto provando il seguente.throw checked Eccezioni da banchine con Mockito
@Test(expectedExceptions = SomeException.class)
public void throwCheckedException() {
List<String> list = mock(List.class);
when(list.get(0)).thenThrow(new SomeException());
String test = list.get(0);
}
public class SomeException extends Exception {
}
Tuttavia, che produce il seguente errore.
org.testng.TestException:
Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
Invalid: com.testing.MockitoCheckedExceptions$SomeException
Guardando il Mockito documentation, usano solo RuntimeException
, non è possibile lanciare eccezioni controllate da un oggetto fittizio con Mockito?
Mentre il mio codice reale non stava effettivamente usando List, la tua risposta vale anche per quella chiamata di metodo. Stavo prendendo in giro il metodo sbagliato. Grazie. –
extra: Mocktio non si lamenterà se fai un metodo senza alcun oggetto da buttare, ma otterrai anche questa eccezione – dwana
Per Kotliners: Kotlin non ha eccezioni controllate, quindi non puoi normalmente dichiarare (nella firma della funzione) che la funzione lancia un'eccezione Tuttavia, è possibile annotare la funzione con l'annotazione 'Throws' per far sì che il compilatore generi lo stesso bytecode come dichiarazione di lancio nell'equivalente codice Java. Vedi [qui] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-throws/index.html) per maggiori dettagli. – Metallica