幾款Mock Framework的比較

18 September 2011 — Written by Sky Chang
#Mock#NuGet#Unit Test

因為Moq與non-Virtual的問題,所以也花了很多的時間找尋解決方案,並且也針對幾款Mock Framework做了比較,雖然沒有很深入的研究,但既然都已經有初步的認識與了解,就順便把這些資訊放上來吧,未來要查找也比較方便,以下是比較常見到的Mock Framework。

  1. RhinoMocks
  2. Moq
  3. TypeMock
  4. JustMock

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,不過,也算是不錯的起頭,未來如果有機會更深入的研究,也會持續更新這篇。

參考資料

  1. http://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use/2608634#2608634
  2. http://stackoverflow.com/questions/2637066/rhino-mock-vs-typemock-vs-justmock-vs
  3. http://www.intellitechture.com/mock-object-frameworks-nmock-rhinomock-typemock/
  4. http://devblog.petrellyn.com/?tag=mstest
Sky & Study4.TW