44

我找不到 Moq 和 Rhino 的具体功能比较。所有的问题都是“你更喜欢哪个以及为什么”,或者“这是你如何在 rhino 中做一个简单的模拟以及它是如何在 moq 中完成的”。

我在任何地方都找不到深入的比较。我知道语法差异,我不是在寻找答案。 我正在寻找能力比较。例如:

  • Rhino 有 Expect.On() 用于线程模拟。起订量可以吗?

  • 多模拟(用一个模拟实现多个接口)怎么样。起订量可以吗?

  • 我相信 Moq 现在可以模拟受保护的成员。犀牛能做到吗?

编辑:我最后也看了一些其他的 .Net 框架。

4

5 回答 5

88

感谢过去几周做出回应的人。我最终写了一篇关于我的发现的博客文章,因为我不得不做这么多的挖掘工作,似乎我不妨总结一下,希望能帮助别人。我发布的图表整理了我的发现:

替代文字

我在博客文章中提到的一个警告是,图表对于检查功能很有用,但大多数框架的真正优势在于它们的独特功能。我最终选择了 Moq,因为 API 易于使用。此外,所有信息都可能出现错误和更改 - 如果您不同意图表上的某些内容,请发表评论。

于 2009-04-27T17:05:11.307 回答
2

我无论如何都不是专家,但我相信 Rhino 添加了一些 Moq 语法,因此学习曲线已经减少到您对 MoQ 的期望。我在测试中都使用过,其中一些语法几乎相同。我最初打算使用 MoQ,因为它更容易,但后来我的 bud 向我展示了最新的更新以及它们有多相似。只是让你知道。

于 2009-03-27T18:17:27.257 回答
1

Rhino 有 GetArgumentsForCallsMadeOn() ,在某些情况下,IMO 可以更轻松地验证参数。

于 2009-04-11T17:02:06.500 回答
0

为了完整起见,我会注意到CodePlex现在有 NMock3 。它可以从 NMock2 轻松迁移,只需将 NMock2.dll 的引用替换为对 NMock3.dll 的引用即可。它增加了类型安全和对重构的支持。

于 2011-01-20T20:17:31.227 回答
-1

我可能会在其中添加“行为验证”。这似乎是 Moq 的最大限制,Rhino(不确定其他人)对此没有任何问题。

于 2009-06-12T20:57:23.147 回答