我真的已經進入TDD,我已經開始在jUnit中使用mockito來提高我的測試代碼的能力。我真的很愛mockito!在參數上調用靜態方法,而沒有在參數中實例化類
我注意到,我必須改變我對編碼的思考方式,比如儘可能地將合作者傳遞給方法,並儘可能限制構造函數中的工作。
以下情景需要來自SO的專家的一些建議。
說我有一個方法,這將調用某些類的靜態方法。例如。
public void method(){
OtherClass.staticMethod();
}
這通常是不好的,但它在我的情況下是需要的。爲了讓代碼在我的單元測試中更具可測性,我想避免依賴OtherClass並將其作爲參數傳遞。
這不起作用,因爲它會產生編譯時錯誤。
public void method(Class<? extends OtherClass> util){
util.staticMethod();
}
...
method(OtherClass.class);
這工作,但我不喜歡實例OtherClass如果我沒有,因爲它是一個純粹的靜態類實用的類似方法:
public void method(OtherClass util){
util.staticMethod();
}
...
method(new OtherClass());
我的問題給你: 有沒有更好的更好的方法來完成這一點,而不使用新的關鍵字?
非常好格式化的問題,爲一個新的用戶,恭喜:) – MarioDS 2013-05-06 06:52:46
我不確定如果你通過一個'OtherClass'子類的實例,你的最後的代碼是否會字。通過實例訪問靜態方法似乎讓我感到困惑,因爲它與該實例無關**,並且它可能無法按照您認爲的方式工作。 – 2013-05-06 06:53:03
順便說一下,在你的情況下使用** Singleton Pattern **而不是靜態方法? – 2013-05-06 06:53:57