相关疑难解决方法(0)

我应该练习"模仿者"还是"经典"TDD?

我读过(并重新阅读)Martin Fowler的Mocks Are not Stubs.在其中,他定义了两种不同的TDD方法:"古典"和"模仿者".他试图回答" 我应该成为一个古典主义者还是一个嘲笑者? "这个问题,但他承认他从来没有尝试过模仿者TDD,而不仅仅是"玩具".所以我想我会问这个问题.好的答案可能会重复福勒的论点(但希望更清楚)或添加他没有想到的论点,或者其他人提出的论点,因为福勒上次在2007年1月更新了这篇论文.

tdd mocking

38
推荐指数
4
解决办法
6083
查看次数

什么是模拟,什么时候应该使用它?

我刚刚阅读了有关模拟对象的维基百科文章,但我仍然不完全清楚它们的用途.当实际对象过于复杂或不可预测时,它们似乎是由测试框架创建的对象(您知道100%确定模拟对象的值是什么,因为您完全控制它们).

但是,我的印象是所有测试都是使用已知值的对象完成的,所以我必须遗漏一些东西.例如,在课程项目中,我们负责日历应用程序.我们的测试套件由事件对象组成,我们确切知道它们是什么,因此我们可以测试多个事件对象,各种子系统和用户界面之间的交互.我猜这些是模拟对象,但我不知道你为什么不这样做,因为没有已知值的对象,你无法测试系统.

testing glossary mocking

28
推荐指数
3
解决办法
1万
查看次数

为什么要使用模拟框架?

我们目前正在使用Autofac作为IoC容器来关注DI模型.

我们最近开始研究像MOQ和Rhino Mocks这样的模拟框架.但是,我们似乎无法证明它们仅用于为每个接口创建Mock实现类.

为什么这样:

var mock = new Mock<IFoo>();
mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
Run Code Online (Sandbox Code Playgroud)

而不是这个:

class FooMock : IFoo {
  bool DoSomething(string input) {
    return input == "ping";
  }
}
mock = new FooMock();
Run Code Online (Sandbox Code Playgroud)

后者更冗长,但似乎更灵活,适合复杂的嘲笑.

.net c# rhino-mocks moq mocking

5
推荐指数
3
解决办法
3063
查看次数

进入存根和嘲弄

我一直在考虑学习存根和模拟,我知道.Net的几个可用库:RhinoMocks,Moq,TypeMock ......虽然我仍然没有太清楚存根和模拟之间的区别,我知道它就在那里,我总是可以谷歌一下.

我想知道,没有进入TDD或类似的东西:

  • 学习曲线值得吗?我不太清楚在这种情况下学习所有关于期望或其他任何回报的细节.

  • 生产收益是否比手工制作"虚拟实施"更大?我想是的,因为动态地模拟/存根一个类更快.

  • 你会推荐哪个图书馆?Moq似乎更容易.

  • 哪些是傻瓜的最佳资源(教程,书籍,视频...),或多或少是最新的?我不想了解一个库,当我下载最后一个版本时,意识到显示的大多数API不再有效.

谢谢你的一切.

.net unit-testing mocking stubbing

3
推荐指数
1
解决办法
377
查看次数

标签 统计

mocking ×4

.net ×2

c# ×1

glossary ×1

moq ×1

rhino-mocks ×1

stubbing ×1

tdd ×1

testing ×1

unit-testing ×1