Estoy intentando que uno de mis objetos simulados arroje una Excepción marcada cuando se llama a un método en particular. Estoy intentando lo siguiente.throw checked Excepciones de simulacros 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 {
}
Sin embargo, eso produce el siguiente error.
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
Mirando el Mockito documentation, que sólo utilizan RuntimeException
, no es posible lanzar excepciones controladas desde un objeto de burla con Mockito?
Si bien mi código real en realidad no usaba Lista, su respuesta se aplica también a esa llamada de método. Me burlaba del método equivocado. Gracias. –
extra: Mocktio no se quejará si lo hace. Tire un método sin elementos descartables, pero también obtendrá esta excepción – dwana
Para Kotliners: Kotlin no ha marcado excepciones, por lo que normalmente no puede declarar (en la función) que la función arroja una excepción. Sin embargo, puede anotar la función con la anotación 'Throws' para hacer que el compilador genere el mismo bytecode que declara throws en el código Java equivalente. Ver [aquí] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-throws/index.html) para más detalles. – Metallica