我試圖學習各種嘲諷庫的來龍去脈,PowerMock(特別是EasyMock擴展)位於列表中。我試圖嘲笑一個構造函數,當我嘗試複製它們時,提供的示例沒有相同的響應。據我所知,它從不嘲笑構造函數,只是像正常一樣進行。PowerMock的expectNew()並不像預期的那樣嘲諷構造函數
這是測試類:
@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);
}
}
我試着用EasyMock.isA(String.class)代替「測試」,但它會產生相同的結果。
這是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";
}
}
的「作家」無非是一類的外殼:
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
當測試運行時,它打印出「返回不拋「,表明這個例外從未拋出。
謝謝,我沒有意識到調用構造函數的對象也需要包含在內。 – AdamSpurgin
我遇到了同樣的問題......正是我錯過了:) –
非常感謝,我掙扎了很長一段時間,直到我找到了答案。 – OQJF