java - powermock example
¿Cómo simular un método estático vacío para lanzar una excepción con Powermock? (3)
¿Te olvidaste de poner PowerMock en modo de reproducción?
Cómo burlarse de los métodos estáticos.
Por su enlace ...
Cómo verificar el comportamiento La verificación de un método estático se realiza en dos pasos. Primero llame a PowerMockito.verifyStatic()
para comenzar a verificar el comportamiento y llame al método estático que desea verificar. P.ej
PowerMockito.verifyStatic();
Static.firstStaticMethod(param);
Importante: Es necesario llamar a verifyStatic()
por verificación de método.
Estoy tratando de usar Powermock y Mockito para simular un método estático vacío para lanzar una excepción como se muestra a continuación. Pero me encontré con un problema. A menos que haga las dos invocaciones de Adder.add () con el mismo argumento, la IOException
burlada no será lanzada.
Por cierto, he agregado @RunWith(PowerMockRunner.class)
y @PrepareForTest(Adder.class)
a la clase de prueba de la unidad.
class Adder{
public static void add(int i) throws IOException{
return;
}
}
@Test
public void testAdder() throws IOException{
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(12);
try {
Adder.add(11);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// assert things
}
Gracias por adelantado. :)
La respuesta es la siguiente.
Después de consultar aquí http://code.google.com/p/powermock/issues/detail?id=278 , de hecho, Adder.add (12) anterior es parte de la configuración del método estático simulado. Significa que cuando se invoca Adder.add () con el argumento 12, se lanzará IOException. Es difícil de entender, ¿verdad? :) Por lo tanto, debe escribirse como a continuación.
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
O
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class, "add", Mathers.eq(12));
La respuesta es la siguiente.
Después de consultar aquí http://code.google.com/p/powermock/issues/detail?id=278 , de hecho, Adder.add (12) anterior es parte de la configuración del método estático simulado. Significa que cuando se invoca Adder.add () con el argumento 12, se lanzará IOException. Es difícil de entender, ¿verdad? :) Por lo tanto, debe escribirse como a continuación.
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
EDITAR:
Enlace está muerto, intente Internet Archive uno en su lugar.