Estoy tratando de aprender los pormenores de varias bibliotecas de burlas y PowerMock (específicamente la extensión EasyMock) es el siguiente en la lista. Estoy intentando burlarme de un constructor y los ejemplos proporcionados no tienen la misma respuesta cuando trato de replicarlos. Por lo que puedo decir, nunca se burla del constructor y simplemente procede como si fuera normal.PowerNeck's expectNew() no se burla de un constructor como se esperaba
Esta es la clase de prueba:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Writer.class})
public class FaultInjectionSituationTest {
@Test
public void testActionFail() throws Exception {
FaultInjectionSituation fis = new FaultInjectionSituation();
PowerMock.expectNew(Writer.class, "test")
.andThrow(new IOException("thrown from mock"));
PowerMock.replay(Writer.class);
System.out.println(fis.action());
PowerMock.verify(Writer.class);
}
}
He intentado reemplazar la "prueba" con un EasyMock.isA (String.class), pero arrojó los mismos resultados.
Este es el FaultInjectionSituation:
public class FaultInjectionSituation {
public String action(){
Writer w;
try {
w = new Writer("test");
} catch (IOException e) {
System.out.println("thrown: " + e.getMessage());
return e.getLocalizedMessage();
}
return "returned without throw";
}
}
El "escritor" no es más que una cáscara de una clase:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
Cuando se realiza la prueba, imprime "devolvió sin lanzamiento ", indicando que la excepción nunca fue lanzada.
Gracias, no me di cuenta de que el objeto que llamaba al constructor debía incluirse también. – AdamSpurgin
Me encontré con el mismo problema ... Precisamente lo que me faltaba :) –
Muchas gracias, luché por un largo tiempo hasta que encontré esta respuesta. – OQJF