Mockito prueba un método vacío arroja una excepción
⏰ 3 minutos de lectura
eduardmlyte
Tengo un método con un void tipo de retorno. También puede generar una serie de excepciones, por lo que me gustaría probar esas excepciones que se generan. Todos los intentos han fallado por la misma razón:
El método when(T) en el tipo Stubber no es aplicable para los argumentos (void)
¿Alguna idea de cómo puedo obtener el método para lanzar una excepción específica?
@JB Nizet Estoy totalmente de acuerdo con usted, pero sin embargo, si escribo doThrow (nueva excepción ()) en lugar de doThrow (Exception.class), tengo el siguiente error cuando inicio mi prueba; Se esperaba la excepción com.company.project.exception.ElementNotFoundException pero se obtuvo org.mockito.exceptions.base.MockitoException:
– clemente
24 de julio de 2015 a las 8:21
Haga otra pregunta, con el código bajo prueba, el código de la prueba y el seguimiento completo de la pila de la excepción.
Gracias por publicar esto aquí; si el método devuelve un valor: dado(mockedObject.methodReturningAnObject()).willThrow(new Exception()); si el método no devuelve nada: willThrow(new Exception()).given(mockedObject).methodReturningVoid(…)); Formulario de explicación javadoc: “Stubbing voids requiere un enfoque diferente de {@link Mockito#when(Object)} (o BDDMockito.given) porque al compilador no le gustan los métodos void entre paréntesis…”
– Lobo359
17 de diciembre de 2018 a las 7:55
ayushi
Puedes probar algo como lo siguiente:
given(class.method()).willAnswer(invocation -> {
throw new ExceptionClassName();
});
En mi caso, quería lanzar una excepción explícita para un bloque de prueba, mi bloque de método era algo como el siguiente
public boolean methodName(param) throws SomeException{
try(FileOutputStream out = new FileOutputStream(param.getOutputFile())) {
//some implementation
} catch (IOException ioException) {
throw new SomeException(ioException.getMessage());
} catch (SomeException someException) {
throw new SomeException (someException.getMessage());
} catch (SomeOtherException someOtherException) {
throw new SomeException (someOtherException.getMessage());
}
return true;
}
He cubierto todas las excepciones anteriores para la cobertura de sonar como a continuación
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Posible duplicado de Cómo hacer métodos simulados para anular con mockito
– Willian
24/07/2017 a las 20:40