さまざまな模擬ライブラリの内容を学習しようとしていて、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);
}
}
IはEasyMock.isA(String.class)と "テスト" を交換しようとしたが、それは、同じ結果が得られました。それは投げずに返された」プリントアウトし、
public class Writer {
public Writer(String s) throws IOException {
}
public Writer() throws IOException{
}
}
テストが実行されます。
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";
}
}
「ライター」は、クラスのシェル以外の何ものでもありません:
この
はFaultInjectionSituationです例外がスローされなかったことを示します。
ありがとう、コンストラクタを呼び出したオブジェクトも同様にインクルードする必要があることはわかりませんでした。 – AdamSpurgin
私は同じ問題に遭遇しました...正確に私が逃していたもの: –
ありがとう、私はこの答えを見つけるまで、長い間苦労しました。 – OQJF