静的メソッド Thread.sleep(1); をモックしようとしています。呼び出されたときに InterruptedException を返す。私の問題に対処しているように見える SO の質問を見つけましたが、その質問の回答と同じになるようにコードを設定した後も、まだ機能しませんでした。
私が見つけたSOの質問は次のとおりです。Powermockで例外をスローするためにvoid静的メソッドをモックする方法は?
テストしようとしているメソッドのスニペットは次のとおりです。
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
LOGGER.error("failure to sleep thread for 1 millisecond when persisting
checkpoint. exception is: " + ie.getMessage());
}
そして、これは私のテストクラスからのスニペットで、 Thread.sleep(1) をモックして私がやりたいことをしようとしたことを示しています:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Thread.class)
public class TestCheckpointDaoNoSQL {
@Test
public void test() throws InterruptedException {
PowerMockito.mockStatic(Thread.class);
PowerMockito.doThrow(new InterruptedException()).when(Thread.class);
Thread.sleep(1);
}
}
また、InterruptedException をモックして、新しいものを作成する代わりにスローしようとしましたが、それは役に立ちませんでした。ECLEMMA がメソッドのその部分のコード カバレッジを示していないため、例外がスローされていないことがわかります。メソッドをデバッグして、キャッチ フレーズがヒットしないことを確認しました。
私の問題を見てくれてありがとう!