这些框架有哪些优缺点?是否有比较表?
我知道JustMock处于beta阶段,但它看起来非常不错(非常类似于TypeMock)。
编辑:MS Mole怎么样?
我最近从 RhinoMocks 转换到 Moq。
它们都具有类似的功能,但是 Moq 有更加 清晰易懂的API。
[免责声明 - 我在Telerik工作]
关于JustMock,有几点需要注意。它的API更类似于Moq而不是RhinoMocks,因此如果您熟悉Moq,学习JustMock应该没有问题。 在JustMock中,我们尝试改进的一点是在模拟顺序调用时具有更好的故事性。 此外,正如其他人已经提到的,JustMock使得使用相同的Moq-like语法能够模拟静态类和方法/属性,封闭类,非虚拟方法和属性等等。 同时,由于这个特性,在JustMock中也可以进行部分模拟。
顺便说一下,Dror提到的“黑魔法”在使用JustMock时也是可能的,只需直接引用Telerik.CodeWeaver.Hook程序集即可,但遗憾的是目前还没有文档记录。 如果有人想这样做,他可以打开支持票据,我们将非常乐意提供帮助。
希望这能帮到您。
还可以参考:https://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use/2608634#2608634
我目前在使用Moq进行单元测试,我必须说它的表现非常好!重述:它非常棒!我没有使用过您提到的其他任何模拟框架,因此无法与之进行比较。但我可以说,我很高兴选择了Moq作为我的第一个尝试模拟框架。Lambda表达式非常好用,而且它也相当轻量级和易于阅读(大多数其他模拟框架中的记录/回放语法并不能真正提高可读性)。
除此之外(这有点离题),我将在不久的将来使用Ninject作为IoC容器,这两个框架是相辅相成的。Ninject也具有Lambda表达式,并且甚至为Moq提供自动模拟容器支持(使用扩展)。因此,如果您也计划使用IoC容器,您可以检查这个强大的组合:]
我不会告诉你哪个是最好的,因为每个都有其优缺点。我总是使用Rhino Mocks,因为它是免费的,并且有一个伟大的社区,很容易找到任何帮助。
TypeMock不是免费的(我猜)。但是,如果您想测试具有私有或静态类型和成员的遗留代码,则TypeMock非常好。其他模拟框架无法做到这一点。缺点是它不强制您编写可测试的代码,而这种代码除了可测试性之外还有其他好处。
我不知道JustMock,所以无法告诉您它的工作原理。
我建议您尝试所有这些并选择一个让您感觉舒适的。但是,如果您需要测试遗留代码,请选择TypeMock。
我希望其他人能给您更多细节。