我刚开始做试验驱动的发展,并且我想知道之间的主要差异RhinoMock,TypeMock和关的嘲讽的?

的任何信息,将不胜感激!

有帮助吗?

解决方案

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

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

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

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

其他提示

一个称为视频 使用的理解模拟对象 由Roy Osherove是非常有益的学习差异的不同的嘲讽库。他不会去详细的各个方面,但是对你不够了解。我希望这有所帮助。罗伊也是首席设计师TypeMock,是一个非常有影响力图在该单元的测试场。我不推荐这个视频有足够的人想要学习如何使用嘲讽,也了解图书馆的提供。

主要的差异之间的TypeMock和开放源图书馆的是,TypeMock使用的探查API由Microsoft提供,而不是一个 动代理.这使TypeMock模拟的具体类和静态的方法。在情况下你不知道的分析器,这是相同的API使用的工具,如JetBrain的dotTrace和展鹏是蚂蚁。净廓线仪。TypeMock只是使用API在一个不同的方式来假(嘲笑)什么你告诉它。

@RichardOD,谢谢你的提醒,他的书"艺术单元的测试"进入更详细的视频没有。我自己的书,这是非常丰富。

  • 犀牛。嘲笑是一个开放源,不断发展和改进框架通过一个行业的最高产开发。它已经存在一段时间,因此支持几个不同的模式对于嘲讽。它可以是一个有点难了解,因此在这个意义上,你可能会找到教程的"旧"的做事方式。这里是尖端, SetUpResultFor()期望。呼吁() 都是旧的做事方式。新的方式是 mockObject.AssertWasCalled().

我没有任何个人经验,这些其他人但是...

  • 最低采购量是一个开放源,不断发展和改进框架通过一个行业是有点不太丰富的开发人员(相比Ayende).这是更新和因此缺少某些功能,犀牛。嘲笑。这通常不是一个问题,因为这些特点往往是那些有所不赞成使用犀牛。我听说因为这是稍微容易学习(模拟框架并不难学习的方式)。
  • 关嘲弄是非常的古朴尽嘲讽。它不支持当前的优选的安排-行动-断言的语法,而是依靠预计验证(记录/重放).它还依靠串的识别方法和性名称,而不是lambda.这使得显着抵抗重构。这是一个严重的问题。我不会推荐它。
  • TypeMock段是一个铁杆,用于支付嘲讽的框架,从一个公司(所拥有的?) 罗伊Osherove-一个家伙谁知道他的测试,但也有一些轻度的有争议的意见如何应用它。它真的很激烈,因为太远,因为它可以做什么-越来越下降到低水平,并修改CLR对象的工作。背后的哲学TypeMock是不是真的100%TDD但是。部分利益方,通过接受的限制的模拟框架将设计更好的代码。TypeMock爆炸的那些限制件。据我所知这主要是用来通过的人正试图得到代码,他们没有控制下的试验。

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

惩戒的SharePoint类是不可能的RhinoMock,起订量,NUNIT等自(I相信)他们需要接口嘲笑对象,而然后能够嘲笑实际具体类。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top