有人在生产中使用Moles / Pex吗?

时间:2010-03-16 15:21:22

标签: visual-studio-2008 unit-testing tdd mocking pex-and-moles

我确实在论坛上搜索过,但没有找到类似的问题。我希望最终决定我们的选择模拟框架作为最佳实践向前推进 - 我已决定使用Moq ......直到最近我发现MS最终创建了一个名为Moles的模拟框架,它似乎工作类似通过探查器API性感等来实现TypeMock。

这里有一百万'NMock vs Moq vs TypeMock vs Rhino ......'线程。但是我从未见过Moles参与其中。事实上,我甚至不知道它是否存在直到很久以前。有人用吗?在生产?任何人都为它转储旧的模拟框架,如果是的话,哪一个?它与你用过的模拟框架相比如何?

谢谢.. ps,我们正在使用VS2008,并且很快就会进入2010年。

6 个答案:

答案 0 :(得分:7)

我认为鼹鼠正在嘲笑到下一个级别,它更强大。

“生产中”是什么意思?摩尔只在单元测试中有用。它有严重的性能影响,它还允许生产中的不安全代码(曾经考虑过将IsAuthorized函数替换为true?)。

2008年和2009年都可以使用摩尔。

希望这能回答你的问题。

答案 1 :(得分:7)

我和你所处的情况相同,所以我想评论一下我的经历。

Typemock和Moles都考虑到了孤立的目标。特别是那些讨厌的密封类,非虚方法。

我认为,如果你处于开发的后期阶段和/或没有/很少控制代码库,那么就需要一个像上面提到的隔离框架。

这些是Typemock的优势,我还没有发现Moles

  • 支持代码覆盖工具(Ncover和Partcover)
  • 支持拦截/验证私人(方法/财产)[是的,这是有争议的]
  • 更加优质的产品,通过直观的API快速启动和运行(仍然在弄乱Moles甚至正常工作)

我希望Moles成熟到已发布的产品,但我修补它的开始似乎与其他MS Research项目没有什么不同;通常是未经修饰的,但这似乎是这类项目的性质。

答案 2 :(得分:7)

Moles由多个产品团队在内部使用。

答案 3 :(得分:1)

Moles和Pex是范式转换!!它对于一个免费的frameowrk来说太过期待了。到目前为止,我没有任何理由不使用它,除非你有跨技术代码库,但只要它.net我痣和Pex肯定是答案!!

答案 4 :(得分:1)

嗯,可能是,很少有线程问题似乎介于两者之间,很难重现。当您甚至尝试在附加进程中设置断点时,它基本上会崩溃VS 2010。对我来说,它确实发生过几次,不仅仅是在一台机器上,而且后来因为不明原因而消失了。

随着绕道而行,调试是你的代码和绕行之间的一种舞蹈,这可能很难在最初处理,如果在此期间有异常,那么它就很难在异常中突破。

自动生成的测试和PUT-它很难掌握他们试图传达的信息,即编码模式应该改变还是别的,尽管它试图根据接口生成参数化测试,但取决于被测试的类, auuto gen PUT可能不是利用参数化测试的最佳方式。

总的来说,有一个学习曲线加上框架也需要一段时间才能成熟。积极的一面,概念是好的,维护成本(如果正确实施),支持PEX的团队的响应时间非常积极,有时候你会在2小时内在PEX论坛上获得有用的回答。

最诚挚的问候 Yogesh Pawar

答案 5 :(得分:0)

如果“在生产中”,那么您的意思是在生产中使用的产品上使用它,绝对是!

我们正在使用Moles来隔离我们的单元测试中的功能,这些测试适用于Google和McDonalds这样的公司。当然,单元测试不会在生产服务器上运行,因此Moles永远不会部署到生产中。