Microsoft Fakes

Microsoft Fakes是微軟提供的一套可以快速進行Mock測試的框架。

介紹

,已經內置於Visual Studio 2012中,可以提供成員模擬的方法.以方便進行單元測試。

如果不使用模擬方法我們要關心很多東西,如資料庫的數據變化,接口調用導致的變化,檔案、及其它資源的訪問等問題。

使用模擬我們則可以只關係我們需要測試的那部分邏輯。

Stub 和 Shim

Microsoft Fakes 提供了兩種模擬類型成員的方式.以下兩種方式的替代實現,都可以由委託來重新實現.

1.Stub Type,存根類型,可以動態地為接口及非密封的virtual或屬性附加委託,以重新定義其實現,生成的類為強類型.

2.Shim Types,填充類型,解決了密封類或static成員的問題,T的填充類型ShimT可以為T的每個成員提供一個替代實現

選擇原則

由於Stub和Shim的實現方式不同,所以它們也有不同的要求,下面總結了選擇它們的一些原則:

性能方面:運行時使用Shim重寫會影響性能,Stub由於使用的是虛方法,則無此問題

對static方法/sealed類型:Stub類型只可以重寫虛方法,因此,它不適用於static方法/sealed方法/sealed類中的方法,等

Internal類型:對於標記了InternalsVisibleToAttribute的內部類型,Fakes也可以起作用

private方法:如果private方法的簽名上的所有類型都是可見類型,那么可以通過Shim來替換實現.Stub只能替換可見方法.

接口和抽象方法:Stub可以提供接口或抽象方法的替代實現.Shim則不能,因為沒有實際的方法體.

所以建議在一般情況下使用Stub來支持那些可測試性做的非常好的類型,而用Shim來解決那些耦合很大,可測試性很差的代碼或三方組件.

相關詞條

熱門詞條

聯絡我們