2013-03-06 47 views
0

問題是:我需要測試方法methodTest()私有類。 methodTest()調用靜態方法staticExternal()來自外部庫。 如何更換staticExternal()mockLocal(),如果我使用jMock和EasyMock的,但類包含staticExternal()沒有界面?如何使用junit和easymock來模擬靜態方法

P.S. PowerMock不能使用。

+0

可能這個問題已經在[這些]中回答了(http://stackoverflow.com/questions/3162551/how-do-i-mock-static-methods-in-a-class-with-easymock)[two ](http://stackoverflow.com/questions/218813/jmock-mocking-a-static-method) – 2013-03-06 14:15:19

+0

爲什麼你拒絕PowerMock,當它是簡單和正確的解決方案,你有問題?如果你想要一個有限的答案,你必須解釋原因。 – 2013-03-06 17:24:21

+0

@AndrewAylett我知道PowerMock是一個很好的框架。不幸的是,我有這樣的練習。謝謝大家! – blackhard 2013-03-06 17:54:09

回答

3

就我所知,你不能。基本上這個代碼很難測試。您應該考慮提取一個依賴項,其中該依賴項的「正常」實現將調用靜態方法。

基本上,靜態方法調用很難精確替換,因爲它們是靜態的。像PowerMock這樣的工具必須爲Java攔截靜態方法調用而煩惱(替換類加載器等)。在我看來,它是通常更好地重構你的代碼,以便它可以測試沒有這樣的事情。

相關問題