【问题标题】:Anyone using Moles / Pex in production?有人在生产中使用 Moles / Pex 吗?
【发布时间】:2011-01-28 04:13:08
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为 Moles 不仅仅是一个模拟框架。它更像是一个拦截器——我不喜欢 Moles:它会生成更多代码。它更像是胶带——不会让你清理你的设计。例如只是鼹鼠日期时间。现在已经!不会导致您将责任置于时钟角色之后。另一方面,如果您要处理现有的一堆遗留代码,Moles 可能是一个简单的选择。
  • 在 Visual Studio 2012 中 Moles 已被替换为 Fakes msdn.microsoft.com/en-us/library/hh549175(v=vs.110).aspx

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


【解决方案1】:

我和你的情况一样,所以我想谈谈我的经历。

Typemock 和 Moles 都牢记隔离目标。尤其是那些讨厌的密封类,非虚方法。

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    希望这能回答你的问题。

    【讨论】:

    • 谢谢。我的意思是在编写“生产”时使用 Moles 使用 TDD 编写生产代码
    【解决方案3】:

    微软内部有多个产品团队使用 Moles。

    【讨论】:

      【解决方案4】:

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

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

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

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

      最好的问候 尤格什·帕瓦尔

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-12
            • 1970-01-01
            • 2010-09-05
            • 2012-01-14
            • 2011-04-15
            • 1970-01-01
            • 2011-12-14
            • 2011-08-24
            相关资源
            最近更新 更多