2014-07-03 44 views
1

我有一個靜態的無效方法從一個不同的類,作爲某種記錄器沿着我的代碼調用。爲了自動測試我的代碼的不同用例,我正在考慮檢查由這種方法創建的系統的日誌。嘲笑靜態void方法並改變它的行爲

我認爲是模擬該類並覆蓋該方法的行爲,以便輸出到System.err。另外,如here所述重定向System.err,以便我可以輕鬆驗證代碼的正確功能。

我不知道如何重寫該方法的標準行爲,以便它可以執行某些操作(打印到stderr)而不是通常的操作(通過不嘲笑它)或者什麼也不做(我使用的是when(...).thenReturn(...)

+0

除非你真的想測試,否則不要測試日誌輸出。爲什麼不測試方法的*行爲*? –

+0

該方法的行爲非常難以測試:它連接到服務器,發送消息並將其顯示在GUI上,但我不想測試GUI。 – user2891462

+0

然後只測試非GUI行爲。如有必要,請重構您的代碼以使其可測試。聽起來你的方法反正太過分了。 –

回答

4

嘲笑靜態方法不是一個好方法,相信我。

雖然它可能與例如PowerMock框架(它將取代引擎蓋下的類加載器),但仍然不鼓勵。

+2

阿門。我們使用了PowerMock,它讓我們陷入了很多麻煩 - 當我們決定刪除它並且必須改變數百次測試時,更加麻煩。 –