NMock2,Rhino mock。哪一个选择?

时间:2009-04-08 17:55:31

标签: .net unit-testing

我正在使用Visual Studio单元测试框架,并且需要使用模拟框架。而且我不确定哪个模拟框架NMock2,Rhino嘲笑我应该选择。你能分享一下你的经历吗?谢谢!

2 个答案:

答案 0 :(得分:3)

如果你正在使用C#3.5,我会强烈考虑Moq。 Rhino文档没有明确区分您可以使用的“语法”数量,这很容易导致编写测试时出现混乱,从而导致各种错误。

在过去两个月向Rhino介绍自己并将其纳入我们正在开发的新产品版本的测试中之后,我正在将所有内容更改为Moq。我根本无法向我们的开发人员介绍Rhino并获得成功,学习曲线太耗时而且收益很少。我不在乎他们是否理解存根和模拟之间的区别,部分或严格或完整。

Moq API的简单性和可发现性意味着我们所有的开发人员都可以立即开始嘲笑,而不必担心琐碎的差异。我想我们的管理者在嘲笑Moq的创造者时也有同样的理念。

答案 1 :(得分:2)

我对使用AAA(Arrange-Act-Assert)模式的RhinoMocks感到非常满意。我能够非常快速地使用它,并且能够完成我所需要的几乎所有操作而无需借助手工模拟。 RhinoMocks中提供的其他一些使用模式对我来说不太清楚,因此我建议使用AAA。

   // Arrange

   var mock = MockRepository.GenerateMock<IMyInterface>();

   mock.Expect( m => m.Method() ).Return( value ).Repeat.AtLeastOnce();

   //  Act

   var testClass = new TestClass( mock ); // injection of mocked object

   var expected = ...expected result from method...
   var actual = testClass.TestMethod();

   // Assert

   Assert.AreEqual( expected, actual );

   mock.VerifyAllExpectations();