我希望这个问题不是“有争议的” - 我只是基本上问 - 有没有人在这里购买过TypeMock并对结果感到高兴(或不满意)?
我们是一个只有12名开发人员的小型开发商店,其中包括2名开发经理。到目前为止我们一直在使用NMock,但是有局限性。我做过研究并开始玩TypeMock,我很喜欢它。它是超级干净的语法,让你基本上可以模拟所有内容,这对遗留代码非常有用。
问题是 - 我如何证明我的老板每个许可证花费800-1200美元用于拥有4-5个完全免费的竞争对手的API? 800-1200 $是每个许可证的Infragistrics或Telerik成本 - 并且肯定不是4-5开源可比的UI框架...这就是为什么我发现它有点高估,虽然是一个很棒的库......
非常感谢任何意见/经验。
编辑:找到MOQ之后,我以为我爱上了 - 直到我发现VB.NET中没有完全支持它,因为VB缺少lambda子例程=(。是否有人使用MOQ for VB。 NET?问题是我们是一个混合的商店 - 我们使用C#进行CRM开发,使用VB进行其他任何操作。再次非常感谢任何指导
编辑:嗯..我在Moq找不到Isolate.WhenCalled()equivalen ...这里有什么帮助吗?我想存根/模拟一个CONCRETE对象的ReadOnly属性(不是模拟对象)...我可以用Isolate.WhenCalled与TM轻松地做到这一点。如何使用Moq ???
答案 0 :(得分:9)
我使用TypeMock的项目已有好几个月了。我们实际上刚刚完成了对Moq (completely free Apache 2.0 licensed mocking framework).的完全淘汰,如果你没有看到它,你一定要看看Moq。除了拥有我见过的任何模拟工具的最直观的语法之外,您还可以获得编译时类型检查的好处。很好。
在我看来,TypeMock比Moq有一个显着的好处。也就是说,它可以模拟任何东西。这包括密封类,非虚拟方法,具体类型以及您可以投入的其他任何东西。如果您正在使用ASP.Net,并且取决于您的代码的结构,它实际上可以在类之后模拟ASP.Net代码。相当整洁。
然而 - 我们发现,如果你很好地构建你的代码,TypeMock的好处不会超过价格。此外,如果你不能用Moq嘲笑某些东西,那可能意味着那里有一股气味。 TypeMock让你变得懒惰,我认为代码可能会受到影响。 Moq和其他像这样的模拟框架(想到RhinoMocks)会让你在编写代码时考虑你的代码,特别是在可测试性方面,但我认为这是一件好事:)此外,我们的团队进入了尝试将TypeMock部署到我们的持续集成服务器的几个令人头疼的问题。
长话短说,TypeMock是一个非常强大的工具。正如您所提到的,对于旧版遗留代码的单元测试,没有更多更好的产品。但是,1000块钱可以获得一个TypeMock许可证,OR,几个resharper许可证,几乎十个TD.Net许可证,一个新的持续集成服务器或许多其他东西。我自己的经验表明它不值得,但你的里程可能会有所不同!
答案 1 :(得分:2)
+1 Eric的回答 - 完全同意。
它类似于MSTest的私有访问机制 - 你很有可能在错误地看待问题。如果你最终不得不使用一些技术性的McGyvery来测试某些东西,那么有人就是在做错事。
当然,接下来的事情就是作为一个对立点,有人已经完成了错误的事情(是的,我正在看着你,SharePoint,WebForms和朋友)你确实需要做一些复杂的事情来处理现在的情况。
像这样的战斗往往是一个巨大的时间点,回想起来很少让你感觉良好。它类似于说“噢,我肯定需要对此进行某种形式的测试,唯一可行的是UI自动化,因为我们处于哪里”。走那条路:将能量从真正的解决方案中拉出来解决真正的问题 - 随着时间的推移,从不同的形式和粒度一直进行适当的测试,并面对这样一个事实,那就是需要做很多工作和学习的技巧。考虑到97.92%的项目从不同阶段开始或倾向于不同阶段的遗产起点,你有一个系统你可以感到舒服的道路
为您留下一组“编码的UI测试”,您将不满意
还有一件事 - MSR有一个Moles项目,他们最近一直在拉皮条,它与TM做同样的事情,即通过探查器钩子进行运行时重写。对于那些觉得他们想要/需要在他们的武器库中拥有某些东西作为备份的人来说,如果你真的在一个真实世界的场景中与Moq一起跑出去,你无法重构自己的方式并最终在一个更好的地方