C# 关于单元测试和rhino模拟的一些问题
我不熟悉编写单元测试,所以我会边写边学。我在MsTest框架中使用Rhino Mock,有一些问题 我在哪里可以找到一些关于rhino Mock的文档,这些文档概述了rhino Mock的特性并给出了解释,这样我就可以打印并检查它了 我已经看到了许多关于期望的以下两种技巧的例子,哪一种更好或更适合于特定情况C# 关于单元测试和rhino模拟的一些问题,c#,unit-testing,tdd,mocking,rhino-mocks,C#,Unit Testing,Tdd,Mocking,Rhino Mocks,我不熟悉编写单元测试,所以我会边写边学。我在MsTest框架中使用Rhino Mock,有一些问题 我在哪里可以找到一些关于rhino Mock的文档,这些文档概述了rhino Mock的特性并给出了解释,这样我就可以打印并检查它了 我已经看到了许多关于期望的以下两种技巧的例子,哪一种更好或更适合于特定情况 Expect.Call( delegate { mockTestClass.MethodToMock(param) } ).Return(true); 或 var mockTestClas
Expect.Call( delegate { mockTestClass.MethodToMock(param) } ).Return(true);
或
var mockTestClass=MockRepository.GenerateMock();
Expect(m=>m.MethodToMock(param)).Return(true);
接下来,我想知道stubing和mock类之间的区别是什么,在哪些场景中应该使用什么
谢谢你的帮助
我在哪里可以找到一些关于rhino Mock的文档,这些文档概述了rhino Mock的特性并给出了解释,这样我就可以打印并检查它了
Rhino Mocks文档和一个好的wiki都是。一般来说,在提到3.3或更低版本时要小心,因为它会有些过时
哪一个更好或更适合特定情况
Expect.Call( delegate { mockTestClass.MethodToMock(param) } ).Return(true);
第二种方式更“流畅”,推荐使用
存根和嘲笑有什么区别
以下是关于这方面的一些资源:
顺便说一句,如果你刚刚开始使用这些概念,我认为你最好使用NUnit和Moq。示例。如果要检查是否调用了特定的方法,并且返回值无关紧要,我建议使用and
AssertWasCalled()
方法:
// Arrange
var mock = MockRepository.GenerateMock<ICustomType>();
var service = new MyService(mock);
// Act
service.DoSomething();
// Assert
// ensures that SomeMethod of the mock was called
// whilst service.DoSomething() call
mock.AssertWasCalled(m => m.SomeMethod());
//排列
var mock=MockRepository.GenerateMock();
var服务=新的MyService(mock);
//表演
服务。DoSomething();
//断言
//确保调用了mock的某个方法
//调用service.DoSomething()时
调用mock.assertwas(m=>m.SomeMethod());
RhinoMocks框架透视图中存根和模拟的区别如下:
- 可以为mock和stub设置期望值,但它们仅针对mock进行验证,例如,您不能为stub指定
等等Repeat().Any()
- 当访问方法或属性时,存根从不失败,所有属性和方法返回
对于给定的返回类型default(T)
,存根的属性是普通属性T
有关模拟和存根之间差异的更多详细信息,请参见毛里西奥的回答中提供的一组链接,我建议您使用马丁·福勒的作品。+1-希望您不介意我在您的回答中添加了另一个Rhino链接非常感谢您的反馈。我能问一下你为什么建议“我认为你最好使用NUnit和Moq”@业余爱好者:NUnit更简单,你会发现很多信息,Moq比Rhino更新。模拟和更好的维护/记录。这是一本学习单元测试的好书——这是我开始学习的。它也会用到mock和stub。