幾款Mock Framework的比較
因為Moq與non-Virtual的問題,所以也花了很多的時間找尋解決方案,並且也針對幾款Mock Framework做了比較,雖然沒有很深入的研究,但既然都已經有初步的認識與了解,就順便把這些資訊放上來吧,未來要查找也比較方便,以下是比較常見到的Mock Framework。
RhinoMocks
他是屬於免費使用的開源項目,他主要是利用繼承的方式來假冒此類別,而也因此有些限制,例如static方法、structs、sealed Class,就會遇到問題。
Moq
他和RhinoMocks一樣,沒有多大的差別,但是Moq使用Lambda來Mock物件,所以視覺上的享受( 比較好閱讀程式碼 )等原因讓大家比較喜歡使用Moq,此Moq目前也是NuGet下的第一名。
TypeMock
算是最強大的,號稱可以模擬所有的物件,他是利用CLR Profiler來攔截.Net的呼叫,並且於run time時改變動作,所以他可以模擬所有的東西,而也有人稱之他為黑魔法!?(black magic),而他是需要付費的,所以未來有機會玩到,我在介紹吧。
JustMock
這個一樣是付費的,他算是比較新的一個產品,目前也有試用版,有找到一些國外寫的文章,但因為是付費,所以也沒深入去查看。
其他之外還有NMock、EasyMock.Net等等,但這部分因為更加的不了解,所以就沒有列出來了,而目前來說,NuGet下載第一名是Moq,台灣大概也最多人使用Moq的吧,文章資訊也最多,RhinoMocks其實在國外也很紅,是NuGet下載數的第二名,但國內文章寥寥可數( 幾乎沒有… ),至於TypeMock就更不用說了…。
最後,這些只是一些小小的整理,因為對於這些東西目前也還沒有機會很深入的去研究和了解,也是因為這次碰到了一些問題,才稍微去看一下其他的Mock Framework,不過,也算是不錯的起頭,未來如果有機會更深入的研究,也會持續更新這篇。