我試圖嘲笑靜態方法Thread.sleep(1);當它被調用時返回一個InterruptedException。我發現了一個似乎解決了我的問題的SO問題,但是在將我的代碼設置爲與該問題的答案相同之後,它仍然無法工作。Powermockito不會拋出一個異常時,嘲笑靜態void
所謂的問題,我發現是:How to mock a void static method to throw exception with Powermock?
這裏是我的方法,我想測試的片段:
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沒有爲該方法的那部分顯示代碼覆蓋範圍,並且我通過該方法進行了調試,以驗證catch語句永遠不會被擊中。
感謝您看看我的問題!
您的代碼看起來幾乎完全像您發佈的鏈接中問題中的代碼。你有沒有嘗試過一些看起來像那個人提出的答案? – femtoRgon
它看起來幾乎完全像那個代碼,因爲我複製了他們的解決方案。我不確定它是否對我不起作用,因爲我做了不同的/錯誤的事情,或者它不能專門用於Thread.sleep。 – CorayThan
不要只是複製代碼,請閱讀他們所寫的內容。我認爲你錯過了他們解決方案的背景。 – femtoRgon