java – 仙人掌与模拟对象(jMock,Easy mock)

我对Cactus和模拟对象(jMock,Easy mock)感到困惑.

有谁可以回答以下问题?

>何时使用仙人掌进行测试?
>什么时候不用仙人掌进行测试?
>何时使用模拟对象进行测试?
>何时不使用模拟对象进行测试?

最佳答案
好吧,这个问题没有很客观的答案,但是模拟对象是关于测试代码的行为,但是无法告诉你是否正确地与容器交互.

Cactus在容器中运行你的代码,所以它实际上更像是一个集成测试,但它告诉你的是你的代码实际上正确地与容器交互(它发送的是合法的,它返回的是真实的).

总而言之,Mock告诉你,如果你想要行为x,你就会得到行为x. Cactus告诉您行为x实际上在容器中获得了预期结果.

您使用哪一个很大程度上取决于您尝试通过测试完成的任务.如果你想做更多的TDD,模拟方法就是你要走的路.你做了单独的原型设计,看看你是否对容器如何编写代码有了足够的了解,然后进行单元测试,然后进行集成测试/验收测试以确保一切正常.

但是,如果您正在尝试进行更多传统的单元测试,那么您尝试使用不同的值来尝试测试边缘情况和行为,那么使用模拟进行测试并不会告诉您太多,因为您的很大一部分容器丢失了.

我目前更喜欢Mock方法,但是如果我要回到Cactus,那么测试容器的不变量会更多,这样如果我们升级容器,我们就知道容器的工作方式没有什么重要的改变会影响我们的码.

转载注明原文:java – 仙人掌与模拟对象(jMock,Easy mock) - 代码日志