2010-11-12 93 views
3

我一直在思考學習存根和嘲笑,我知道的幾個for .NET的可用庫:RhinoMocks,起訂量,TypeMock ......雖然我還沒有太多清楚存根之間的區別,嘲笑,我知道它在那裏,我總是可以谷歌。進入磕碰和嘲諷

我想知道,但是不爲TDD或任何類似:

  • 是學習曲線,值得嗎?我不太清楚所有關於期望的小細節,或者在這種情況下會得到什麼回報。

  • 生產增益是否比手工製作「虛擬實現」大得多?我想是的,因爲動態地嘲笑/保留一個類會更快。

  • 您推薦哪個庫? Moq似乎更容易。

  • 哪些是傻瓜或多或少最新最好的資源(教程,書籍,視頻......)?我不想了解一個庫,並且當我下載最新版本時,意識到所顯示的大多數API不再有效。

謝謝你的一切。

+1

答案是選項,這個問題應該是社區Wiki(恕我直言) – 2010-11-12 10:20:30

+1

使用正確的工具,學習曲線可以很容易。例如,在Java中使用mockito非常簡單,需要大約10分鐘的時間來學習。我相信你會爲.Net(或幾個)找到一個類似的庫。順便說一句,這個問題看起來像一個dup - 我確信它之前已經被問過。嘗試搜索一下。 – ripper234 2010-11-12 10:22:25

+0

我沒有足夠的權限啓動wiki帖子。關於搜索,好吧,我搜索了一下,看了一些其他的帖子,但他們都是舊的,或者沒有在我想要的級別上覆蓋我的問題,所以認爲開始一個新問題並不是一個壞主意。 – Neverbirth 2010-11-12 10:29:32

回答

2

我一直在使用FakeItEasy了幾個月的現在,它是僞造太神奇了!
我不能推薦它足夠高。

+0

注意到了,我不知道它,雖然它已經在上個源代碼提交後的一個月左右,它仍然活躍嗎?我猜也是。 – Neverbirth 2010-11-12 10:31:09

+0

它仍然活躍,我還沒有推一段時間。目前沒有功能請求,所以我只有本地提交。 – 2010-11-13 20:23:43

5
  • 學習曲線值得嗎? - 是的,這並不難。一旦你知道如何使用模擬框架,你將在單元測試中節省大量的時間。

  • 比手動模擬更好嗎? - 不一定,在某些情況下手動嘲笑可能會更好。但IMO,嘲笑框架通常是以最少的代碼完成任務的最快方式。嘗試兩種方法,你就會知道在特定情況下哪種方法最好。

  • 哪個庫? - MoqRhino Mocks是最受歡迎的.Net according to this poll,它們都有很多功能並且易於使用。使用Rhino有兩種模擬方式('記錄&回放'和'AAA'模式) - 我只使用AAA模式。我認爲 Moq只能像犀牛'AAA'模式一樣工作,所以可能會稍微減少混淆。

  • 不確定特定的資源,只需選擇一個工具,谷歌它,你會發現很多。

在嘲笑&存根之間的差異方面,一個模擬可以記錄這是怎麼回事(被稱爲它例如什麼方法),而存根不能。當你開始使用它們時你會發現更多。

+0

我預計NMock和JustMock會有更多的選票。我在一些示例中看到了Rhino的記錄和回放調用,並且對它增加的複雜性如何是值得的有點困惑,無論如何,我實際上並不知道它們是如何工作的/他們實際做了什麼,所以我不能評論它根本就沒有。 – Neverbirth 2010-11-12 10:39:00

+0

是的,回放的東西是舊的方式(並且不允許你在單元測試中遵循'Arrange Act Assert'模式 - 又名AAA),我個人認爲你可以忘記它。這就是爲什麼我認爲Moq可能是一個更好的選擇,因爲它沒有像Rhino那樣的API調用的遺留問題,所以它應該更容易學習。 – 2010-11-12 10:49:00

0

我實際使用RhinoMocks,並且在學習曲線是相當痛苦的,現在我很滿意的結果。無論如何,它需要(或至少,它花了我,但也許我有點愚蠢:))一段時間之前,你比手動製作虛擬實現更快。我從來沒有使用任何你提到的其他庫,所以我無法對它們進行比較。

該主頁還包含一些很好的文檔。總體而言,我認爲這是一項有價值的工作,我會推薦它。

+1

我在Rhino Mocks看到的一個障礙是它的官方文檔不是很好,是嗎?當決定進一步瞭解它時,Rhino Mocks是我的第一個賭注。 – Neverbirth 2010-11-12 10:40:42

+0

是的,你是完全正確的:這是最大的障礙。無論如何,你可以通過互聯網發現許多信息,即在這裏stackoverflow你可以找到很多信息。 – Simone 2010-11-12 10:48:27

+0

這就是爲什麼我問學習的最佳資源,爲什麼我會談論官方文檔,在學習新內容時似乎是一個廣泛的主題,我喜歡集中式資源,而不必通過多個站點查看信息最終過時,缺乏或沒有遵循我目前的知識水平。 – Neverbirth 2010-11-12 11:46:22

0

存根 - 模擬「真實」對象的行爲並負責保持測試可運行的假對象。

模擬 - 用於斷言測試通過的存根。


關於嘲諷框架 - 這個問題has been asked before

我自己的偏好是使用兩種方法。當我覺得使用框架更容易時,我會使用這個框架,並且使用vica - 有時候簡單的假貨已經足夠並且更容易理解。不幸的是 - 直到你實際學習使用之前,你將無法自行判斷。

Moq最近似乎是.Net領域最流行的嘲諷框架。我也在使用它。