RhinoMock与TypeMock与NUnit的的嘲讽?(RhinoMock vs. TypeMo

2019-07-04 19:46发布

我刚开始做测试驱动开发,我想知道RhinoMock,TypeMock之间的主要区别,和NUnit内置的嘲讽?

任何信息将不胜感激!

Answer 1:

TypeMock是一个商业产品(这意味着你必须为它付出),但可以让你嘲笑具体的对象 - 不像RhinoMocks / NUnit的/最小起订量只能嘲笑的接口/抽象类。 它是如何实现这一功能交界黑魔法,但它确实一些非常聪明的事情与CLR。

当你在你的项目中不使用多个接口使用库这可能是特别有用。 所以,你可以,例如,使用TypeMock嘲弄了LINQtoSQL的datacontext,或SharePoint对象。 但是,如果你正在使用TypeMock这是没有理由在您的应用程序设计不好

据我所知,除了轻微的语法差异,大部分嘲弄框架已经从旧记录/播放模式的路程。 通常情况下,可通过编写使用流利的接口预期设置你的嘲弄。

就个人而言,我只用MOQ和I <3它。



Answer 2:

视频名为TDD -了解Mock对象由罗伊Osherove是在学习不同的嘲讽库的差异非常有帮助。 他没有在各个方面的很详细去,却足以让你明白。 我希望这有帮助。 罗伊也是TypeMock首席架构师,并在单元测试领域一个非常有影响力的人物。 我不能推荐一个人该视频足以谁愿意学习如何使用嘲讽,也了解图书馆的使用。

TypeMock和开源库的之间的主要区别在于,TypeMock使用由微软而不是提供的探查API 动态代理 。 这使得TypeMock嘲弄具体类和静态方法。 如果你不知道该分析器是什么,它是使用像JetBrain的dotTrace和展鹏的蚂蚁净分析器工具相同的API。 TypeMock只是使用API​​以不同的方式,以假(模拟),你告诉它什么。

@RichardOD,感谢您的提醒,他的著作“ 单元测试的艺术 ”进入其中视频没有更多的细节。 我自己的书,这是非常丰富的。



Answer 3:

  • Rhino.Mocks是一个开源的,不断发展壮大,并通过了业内最丰富的开发商之一改进框架。 它已经有一段时间了,因此支持相当多的不同的模式进行嘲讽。 它可以是一个有点艰难,因此在你可能会发现教程做事情的“老”的方式感觉学习。 这里有一个技巧,SetUpResultFor()Expect.Call()是做事的老路子。 新方法是mockObject.AssertWasCalled()。

我还没有与这些人,但任何个人的经验...

  • 最小起订量是一个开源的,不断发展和行业的稍差多产的开发商之一改进框架(相对于Ayende)。 它是新的,因此缺乏这Rhino.Mocks有一些功能。 这通常不是一个问题,因为这些特征往往是那些在犀牛有些过时。 我听说,因为这是稍微容易学习(嘲讽的框架并不难的方式来学习)。
  • NUnit的嘲笑是非常古雅尽可能嘲弄去。 它不支持目前优选的安排,法,断言语法而不是依赖于期望 - 验证(记录/回放)。 这也依赖于字符串识别方法和属性名称,而不是lambda表达式。 这使得它来重构显著性。 这是一个严重的问题。 我不会推荐它。
  • TypeMock隔离器是从公司罗伊Osherove(归?)一个铁杆的付费模拟框架 - 谁知道他的测试,但也有一些温和的争议意见,对如何使用它的人。 这实在是激烈的,只要它能做什么 - 越来越下降到较低水平,修改CLR对象的方式工作。 背后TypeMock的哲学是不是真的不过100%TDD。 的TDD的好处之一是,通过拥抱嘲弄框架的限制,你会设计出更好的代码。 TypeMock爆炸成碎片这些限制。 据我所知,它主要使用的人谁试图获取代码,他们没有控制权下测试。


Answer 4:

我使用TypeMock所有的时间,发现它是一个非常强大的工具,可以提高我的单元测试的覆盖范围。 这是因为我与SharePoint工作,只有TypeMock可以允许我模拟出的SharePoint类 - 因为它们是具体的类,而不是接口。

嘲笑的SharePoint类是不可能的RhinoMock,起订量,NUnit的,因为等(我相信)他们需要的接口嘲笑的对象,而不是能够嘲笑实际的具体类。

如果你的代码不使用大量的接口,你不需要嘲弄具体类则TypeMock是有点贵,但你得到的权力,这是值得的。



文章来源: RhinoMock vs. TypeMock vs. NUnit's Mocking?