8

我希望这个问题不是“有争议的”——我只是在问——这里有没有人购买了 TypeMock 并对结果感到满意(或不满意)?

我们是一家只有 12 名开发人员的小型开发商店,其中包括 2 名开发经理。到目前为止,我们一直在使用 NMock,但有一些限制。我已经完成了研究并开始使用 TypeMock,我喜欢它。它的语法非常简洁,基本上可以模拟所有内容,这对于遗留代码非常有用。

问题是 - 我如何向我的老板证明每个许可证花费 800-1200 美元购买一个有 4-5 个完全免费的竞争对手的 API?800-1200 美元是每个许可证的 Infragistics 或 Telerik 成本——而且肯定没有 4-5 个开源可比 UI 框架......这就是为什么我觉得它有点高估了,尽管它是一个很棒的库......

非常感谢任何意见/经验。

编辑:在找到 MOQ 后,我以为我坠入爱河 - 直到我发现 VB.NET 不完全支持它,因为 VB 缺少 lambda 子例程 =(。有人在 VB.NET 中使用 MOQ 吗?问题是我们是混合的shop - 我们使用 C# 进行 CRM 开发,使用 VB 进行其他一切。再次非常感谢任何指导

编辑:嗯..我在最小起订量中找不到 Isolate.WhenCalled() 等价物...这里有什么帮助吗?我想存根/模拟一个CONCRETE对象(不是模拟对象)的ReadOnly属性......我可以使用Isolate.WhenCalled和TM轻松做到这一点。起订量如何???

4

2 回答 2

9

我参与的项目使用 TypeMock 好几个月了。实际上,我们刚刚完全淘汰了Moq(完全免费的 Apache 2.0 许可模拟框架)。如果您还没有看到,您绝对应该查看起订量。除了拥有我见过的任何模拟工具中最直观的语法之外,您还可以获得编译时类型检查的好处。非常好。

在我看来,TypeMock 比 Moq 有一个显着的优势。也就是说,它可以模拟任何东西。这包括密封类、非虚拟方法、具体类型以及几乎任何你可以扔给它的东西。如果您正在使用 ASP.Net,并且根据您的代码结构,它实际上可以使在类后面模拟 ASP.Net 代码成为可能。相当整洁。

但是 - 我们发现,如果您的代码结构良好,TypeMock 的好处不会超过价格。此外,如果你不能用 Moq 模拟某些东西,那可能意味着那里有气​​味。TypeMock 让你变得懒惰,我认为代码可能会因此受到影响。Moq 和其他类似的模拟框架(想到 RhinoMocks)确实让您在编写代码时考虑您的代码,尤其是在可测试性方面,但我认为这是一件好事 :) 此外,我们的团队遇到了尝试将 TypeMock 部署到我们的持续集成服务器时遇到了几个令人头疼的问题。

长话短说,TypeMock 是一个非常强大的工具。正如您所提到的,对于旧的遗留代码进行单元测试,没有多少更好的产品。然而,1000 美元可以获得一个 TypeMock 许可证,或者,几个 resharper 许可证,近十个 TD.Net 许可证,一个新的持续集成服务器或许多其他东西。我自己的经验表明这不值得,但你的里程可能会有所不同!

于 2010-03-04T02:14:29.097 回答
2

+1 Eric 的回答 - 完全同意。

它类似于 MSTest 的私有访问器机制——你很有可能把问题看错了。如果你最终不得不使用一些技术性的 McGyvery 来测试某些东西,那么有人做错了。

当然,接下来要反驳的是,在某些情况下,有人已经做错了(是的,我在看你,SharePoint、WebForms 和朋友),你确实需要做一些复杂的事情为了处理现在的情况。

像这样的战斗通常是一个巨大的时间消耗,回想起来很少会让你感觉良好。这类似于说“哦,我肯定需要对此进行某种形式的测试,唯一可行的就是 UI 自动化,因为我们所处的位置”。沿着这条路走:

  • 将精力从真正问题的真正解决方案中抽离出来——随着时间的推移,对不同形式和粒度进行适当的测试,并面对这样一个事实,即在拥有一个系统的道路上还有很多工作要做和需要学习的技术考虑到 97.92% 的项目从不同阶段开始或趋向于不同阶段的 Legacy 起点,您可以放心

  • 给你留下一组你不会满意的“编码 UI 测试”

还有一件事——MSR 有一个他们最近一直在拉皮条的 Moles 项目,它与 TM 做同样的事情,即通过分析器钩子进行运行时重写。如果您在现实世界的场景中确实无法使用 Moq,而您无法重构自己的出路并最终进入一个更好的地方,那么对于那些觉得他们想要/需要在他们的武器库中拥有一些东西作为备份的人可能会很有用.

于 2010-03-12T09:43:04.480 回答