2014-03-26 148 views
0

我正在嘗試爲使用JUnit和Mocktio的類創建一個UnitTest。 這個類裏面,有幾個電話,從一個單的方法,如在另一個對象中創建的模擬對象

Singleton.getInstance().doSomething(value); 

,我知道的值的類型。 (在構造函數中沒有參數或處理單例引用的方法) 是否可以模擬單例?我的第一個想法只是調用Mockito.mock(Singleton.class)並將其作爲參數傳遞,但接下來我必須將該類更改爲接受單例作爲參數 - 這對我來說沒有任何意義。

(我同意這可能是一個設計缺陷,但目前我無法重構該單例的使用)。

回答

1

這裏的問題是Mockito不允許模擬靜態方法(getInstance)。然而JMockitPowermock都允許這樣做。

另一個可能使用Mockito的選項取決於getInstance中的代碼。如果這是檢查/返回一個字段,您可能可以使用反射將該字段分配給模擬實例。

相關問題