Sto cercando di imparare i dettagli di varie librerie di derisione e PowerMock (in particolare l'estensione di EasyMock) è il prossimo sulla lista. Sto tentando di prendere in giro un costruttore e gli esempi forniti non hanno la stessa risposta quando provo a replicarli. Per quanto posso dire, non prende in giro il costruttore e procede come se fosse normale.L'aspettativa di PowerMock() non sbeffeggia un costruttore come previsto
Questa è la classe di test:
@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);
}
}
Ho provato a sostituire il "test" con un'EasyMock.isA (String.class), ma essa fece gli stessi risultati.
Questa è la 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";
}
}
Il "Writer" non è altro che un guscio di una classe:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
Quando il test viene eseguito, esso stampa "tornato senza lancio ", indicando che l'eccezione non è stata mai lanciata.
Grazie, non mi sono reso conto che l'oggetto che ha chiamato il costruttore doveva essere incluso. – AdamSpurgin
Mi sono imbattuto nello stesso problema ... Proprio quello che mi mancava :) –
Grazie mille, ho faticato a lungo finché non ho trovato questa risposta. – OQJF