学习他们所有的人足以决定女巫使用的时间是不合理的。我不相信我们还没有达到一个阶段,我们可以谈论最好的模拟框架。那么,我应该问什么问题,关于项目和自己,以帮助决定在特定情况下使用的最佳模拟框架?
它也将是有用的知道为什么你选择嘲笑框架,你正在使用,如果你仍然满意的选择。
在比较嘲笑框架的样式时,是否还有一个有用的词汇?
(我已经限制这个问题到.NET因为Java没有属性或lambda表达式,所以我希望嘲笑框架可以更好的.Net然后Jave)
到目前为止的摘要:
>如果需要模拟静态方法,或
没有虚拟方法,然后唯一
合理的选择是TypeMock,但它不是免费的,不会驱使你走向一个好的设计。
> Rhino Mocks是一个很好的选择如果你
正在做TDD,例如你的对象
希望模拟实现接口。目前看来是“市场领导者”
> Moq(introduction)如果你是
使用.NET 3.5 Moq可能会再次对Rhino Mocks的新项目
我从这份摘要中漏掉了什么?
那么什么驱动器在Rhino Mocks和Moq之间选择,如果你使用.NET 3.5?
也可以看看:
> What c# mocking framework to use?
> What are the capabilities of Moq and Rhino.mocks?
> What are the real-world pros and cons of each of the major mocking frameworks?
“What should I consider when choosing a dependency injection framework for .NET?”也可能是有意义的,因为它询问问题的“另一方”。
你应该问的关于这个项目的问题是:该项目是用SOLID原则开发的,还是不是?这是一个具有松散耦合和高内聚力的项目吗?在项目建设中是否使用了良好的OO原则?是否使用依赖注入容器?系统是否按照合同设计方法编码(彻底利用接口)?
如果你对这些问题的答案是肯定的,那么你可以利用一个模拟框架,如RhinoMocks,这是一些人会称之为“意见”框架。 RhinoMocks和一些其他模拟框架,对如何设计系统以便对象被嘲笑有非常强烈的意见。像RhinoMocks这样的框架期望你的项目以一定的方式设计。当你以正确的方式构建代码(没有密封的类,没有静态,大量使用接口,虚拟上类方法等等)时,RhinoMocks的Mocking当然更容易了。
如果你对这些问题不回答,或者如果你在一个有很多高度耦合类的遗留系统上工作,那么你唯一的选择是TypeMock,它可以模拟任何事情。
它也将是有用的知道为什么你选择嘲笑框架,你正在使用,如果你仍然满意的选择。
我选择RhinoMocks,因为在那个时候(3年前),它显然是最成熟的嘲笑框架与最多的功能。我留在了它,因为它已经进化,使我的生活更容易(AutoMocking容器的出现是一个巨大的步骤,效率)。
我喜欢RhinoMocks,除了功能集和易用性,它指导我在我的代码更好的设计。我不是一个完美的程序员,我会在设计中犯错误。但是像RhinoMocks和NHibernate这样的工具可以帮助我指导一个更好的设计,因为当我做错误和创建糟糕的设计时,这些工具变得很痛苦。例如,如果你有一个坏的数据库设计,NHibernate是很痛苦的工作。 RhinoMocks是非常痛苦的工作,如果你有一个糟糕的类设计,不使用接口,不使用IoC …等。
我喜欢RhinoMocks,因为它最终可以帮助我成为一个更好的开发人员,而不仅仅是因为我正在测试我的代码,但因为我正在塑造我的代码 – 设计它在一个更好的方式。