使用舊代碼並嘗試創建測試時,我經常從類或方法中分離出依賴關係,因此我可以使用mock編寫這些依賴關係的單元測試。依賴關係通常以調用靜態類和對象的形式出現,這些靜態類和對象是使用構造函數中的new關鍵字或該類中的其他位置創建的。最簡單,最快的方式來打破類的所有依賴關係
在大多數情況下,靜態調用是通過包裝靜態依賴來處理的,或者如果它的一個單例模式(或類似的)以StaticClass.Current.MethodCall()的形式傳遞該依賴, 。
在大多數情況下,構造函數中new關鍵字的使用僅僅是通過在構造函數中傳遞該接口來替換。
在大多數情況下,在類的其他部分使用new關鍵字,可以通過與上面相同的方法處理,或者在需要時創建工廠,並在構造函數中傳遞工廠接口。
我總是使用Resharpers重構工具來幫助我解決所有這些問題,但大多數情況仍然是手工勞動(可能是自動化的),對於一些遺留類和方法來說,這可能是一個非常單調乏味的過程。有沒有其他的重構插件和/或工具可以幫助我在這個過程中?是否有「通過單擊」突破這個類的所有依賴性?「重構工具? =)
對我來說,聽起來像所有這些步驟是很多開發人員和常見問題的常見問題,並且在我嘗試將插件寫入Resharper或CodeRush之前,我不得不問,因爲有人可能已經嘗試過這種方法。
新增:
在反射到下面的答案:即使你可能不希望打破眼前的一幕(點擊總量突破了可能會導致更多的問題比它幫助)仍然能夠簡單地打出來1個方法依賴關係,或者1-2個依賴關係很容易,會有很大的不同。
此外,重構代碼有一個「嘗試看看會發生什麼事情,只是爲了學習如何將所有東西放在一起」,並且一次點擊就可以幫助處理噸,即使你不檢查代碼。
除了下面提到的遺留代碼現在的經典工作方式,您可能會發現.NET中的Brownfield應用程序開發有趣:http://www.manning.com/baley/ – AakashM 2010-06-30 14:49:53