每个主要模拟框架的现实利弊是什么?

Ben*_*ter 14 .net c# rhino-mocks moq mocking

另请参阅" 为.Net选择模拟框架时应该考虑什么 "

我正在尝试决定在我最近开始使用的.NET项目上使用的模拟框架.我想加快对不同框架的研究.我最近阅读了这篇博客文章http://codevanced.net/post/Mocking-frameworks-comparison.aspx,并想知道是否有任何StackOverflow受众在实际优势的方式和框架的注意事项中添加任何内容.

人们是否可以列出他们目前正在使用或已经调查过自己在.NET项目中使用的模拟框架的优缺点.我认为这不仅有助于我决定当前的项目,还可以帮助其他人在为他们的情况选择正确的框架时做出更明智的决策.我不是任何框架的专家,但我想得到支持和反对我遇到的主要框架的论据:

  • RhinoMocks
  • 起订量
  • TypeMock隔离器
  • NMock

我错过了其他可用的替代品.我也喜欢那些由于问题而转换或停止使用产品的用户的见解.

Mar*_*ann 13

我根本不认识摩尔人,但我会介绍我所知道的那些(尽管我真的需要一张桌子).

起订量

优点

  • 类型安全
  • 一致的界面
  • 鼓励良好的设计

缺点

  • 不像其竞争对手那样功能齐全
    • 它无法模仿代表
    • 它不能做有序的期望
    • 可能是我现在想不到的其他事情......
  • 只能模拟接口和虚拟/抽象成员

犀牛嘲笑

优点

  • 类型安全
  • 全功能集
  • 鼓励良好的设计

缺点

  • 令人困惑的API.有太多不同的方法来做同样的事情,如果你以错误的方式组合它们就行不通.
  • 只能模拟接口和虚拟/抽象成员

TypeMock隔离器

优点

  • 类型安全(AFAIR)
  • 可以嘲笑任何事

缺点

  • 非常侵入性
  • 潜在供应商锁定
  • 不鼓励好的设计

NMock

优点

  • 鼓励良好的设计
  • 适用于任何版本的.NET(甚至1.1)

缺点

  • 不是类型安全的
  • 只能模拟接口和虚拟/抽象成员

请注意,特别是有关TypeMock的优点和缺点是极具争议性的.我在博客上发表了自己对此事的看法.

我开始使用NMock,这是2003年唯一的选择,然后由于其类型安全而迁移到Rhino Mocks,现在因为API更简单而使用Moq.

  • 关于Moq的有序期望:Phil Haack在这里展示了一个很好的方法来规避:http://haacked.com/archive/0001/01/01/moq-sequences.aspx (2认同)