我确实在论坛上搜索过,但没有找到类似的问题。我希望最终决定我们的选择模拟框架作为最佳实践向前推进 - 我已决定使用Moq ......直到最近我发现MS最终创建了一个名为Moles的模拟框架,它似乎工作类似通过探查器API性感等来实现TypeMock。
这里有一百万'NMock vs Moq vs TypeMock vs Rhino ......'线程。但是我从未见过Moles参与其中。事实上,我甚至不知道它是否存在直到很久以前。有人用吗?在生产?任何人都为它转储旧的模拟框架,如果是的话,哪一个?它与你用过的模拟框架相比如何?
谢谢.. ps,我们正在使用VS2008,并且很快就会进入2010年。
答案 0 :(得分:7)
我认为鼹鼠正在嘲笑到下一个级别,它更强大。
“生产中”是什么意思?摩尔只在单元测试中有用。它有严重的性能影响,它还允许生产中的不安全代码(曾经考虑过将IsAuthorized函数替换为true?)。
2008年和2009年都可以使用摩尔。
希望这能回答你的问题。
答案 1 :(得分:7)
我和你所处的情况相同,所以我想评论一下我的经历。
Typemock和Moles都考虑到了孤立的目标。特别是那些讨厌的密封类,非虚方法。
我认为,如果你处于开发的后期阶段和/或没有/很少控制代码库,那么就需要一个像上面提到的隔离框架。
这些是Typemock的优势,我还没有发现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永远不会部署到生产中。