2010-06-14 43 views

回答

15

我实际使用Moq 痣在同一个测试项目中。两者都有优势,我会在适当的地方使用。一般来说,我使用Moq进行标准的AAA测试和验证,而Moles是其他方面无法模仿的东西的“大枪”,如扩展方法调用等。

我喜欢这种安排,因为每个测试都可以像尽管模拟设置在测试之间可能会有很大差异,但尽可能简单明智。

+2

+1重要的一点,两者可以一起使用 - 你只需要仔细选择你的'第一度假胜地'。 – 2010-06-21 09:00:26

+1

将很高兴看到这样的例子,您的工作流中的任何博客文章?我觉得TDD tbh – roundcrisis 2010-07-09 11:58:24

+1

有一点不自然,你应该举个例子 - 我目前没有一个例子,但我会环顾四周,看看我的代码是否可以变成一个。 – ZeroBugBounce 2010-07-15 01:56:55

3

鼹鼠经常与TypeMock进行比较/对比,因为它提供Moq和/或RhinoMocks的甜蜜点以外的一套设施。

您在选择时需要考虑的主要问题是您是否希望保持测试技术相对低技术含量或参与更高级别的技术欺骗。这很大程度上取决于你在做什么 - 你已经标记了ASP.NET而不是MVC,这表明它可能确实与你有关。

看一看this Dimecasts.net video有一个很好的概述。

+0

我正在使用ASP.NET MVC。我更新了标签。 – user300981 2010-06-15 02:45:43

+0

@ bobsmith123:在这种情况下,我个人不会看到使用更重量级嘲讽框架的理由 - 我会推迟在这样的炮兵中拉直到必要的时候。使用Pex是一个单独的决定,但应该独立于你选择的嘲讽框架。你为什么用Pex标记q,然后不提及它 - 你是否有兴趣使用它/你问他们是花生酱还是果冻/你认为它是从莫尔斯不可分割的吗? – 2010-06-15 07:37:17

5

鼹鼠被设计成与Pex的白盒分析高效工作。所有其他模拟框架通常会产生大量开销。

Moles提供了一个简单的价值主张:用代理替换任何.NET方法。按照设计,Moles不像其他框架那样提供任何API来表达“验证”。决定这个决定是否适合你,真的取决于你。

如果您需要使用内部构造函数处理依赖于硬编码静态方法或密封类型的(遗留)代码,Moles可以帮助您处理这些情况。

如果您有接口和很好的组件化代码,Moles还会生成细长的存根,即接口实现,您可以使用该分析器。

+0

+1如果您想查看在莫尔斯中调用某个方法的次数,您必须放入自己的计数器并让委托调用原始方法(如果需要)。与'Times.Once'和其他一些框架提供的方法(如Moq)相比。 – Pat 2010-08-11 21:06:27