11

我确实搜索了论坛并没有找到类似的问题。我希望对我们选择的模拟框架作为最佳实践做出最终决定——我已经决定了起订量……直到我最近才发现 MS 终于创建了一个名为 Moles 的模拟框架,它似乎工作起来类似通过分析器 API 性感等来 TypeMock。

这里有一百万个“NMock vs Moq vs TypeMock vs Rhino....”线程。但我从来没有见过鼹鼠。事实上,直到不久前我才知道它是否存在。有人用吗?在生产中?任何人都为它倾倒了他们旧的模拟框架,如果是这样,是哪一个?它与您使用的其他模拟框架相比如何?

谢谢.. ps,我们正在使用 VS2008,并且很快将迁移到 2010。

4

6 回答 6

7

我认为鼹鼠正在将嘲笑提升到一个新的水平,它更强大。

“生产中”是什么意思?Moles 仅在单元测试中有用。它具有严重的性能影响,并且还允许在生产中使用不安全的代码(是否考虑过替换 IsAuthorized 函数以返回 true?)。

痣在 2008 年和 2009 年都可以使用。

希望这能回答你的问题。

于 2010-04-01T19:43:13.250 回答
7

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

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

我相信需要一个如上所述的隔离框架,特别是如果您处于开发的后期阶段和/或对代码库没有/很少控制。

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

  • 支持代码覆盖工具(Ncover 和 Partcover)
  • 支持拦截/验证私有(方法/属性)[是的,这是有争议的]
  • 更精致的产品,通过直观的 API 快速启动和运行(仍然与 Moles 混淆,甚至可以正常工作)

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

于 2010-04-20T16:41:24.497 回答
7

微软内部的多个产品团队都在使用 Moles。

于 2010-04-23T09:30:34.897 回答
1

Moles 和 Pex 是范式转变!对免费框架的期望太多了。到目前为止,我没有遇到任何不使用它的理由,除非你有跨技术代码库,但只要它 .net 我痣和 Pex 绝对是答案!

于 2010-07-19T21:25:12.927 回答
1

好吧,可能是,在两者之间似乎很少出现线程问题,很难重现。当您甚至尝试在附加进程中放置断点时,它基本上会导致 VS 2010 崩溃。它确实发生了几次,不仅在一台机器上,而且后来不知何故消失了。

当绕道发生时,调试是您的代码和绕道之间的一种舞蹈,最初可能难以应对,如果在此期间出现异常,那么很难打破异常。

自动生成的测试和 PUT - 很难掌握它们试图传达的信息,即是否应该更改编码模式或其他东西,尽管它尝试基于接口生成参数化测试但取决于被测类,自动生成 PUT可能不是利用参数化测试的最佳方式。

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

最好的问候 Yogesh Pawar

于 2010-09-06T22:12:40.767 回答
0

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

我们正在使用 Moles 来隔离我们对 Google 和 McDonalds 等公司的一个非常知名的项目的单元测试中的功能。当然,单元测试不在生产服务器上运行,所以 Moles 永远不会部署到生产环境中。

于 2012-02-24T16:33:05.687 回答