繁体   English   中英

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

[英]Cactus versus mock objects (jMock, Easy mock)

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

有谁可以回答以下问题?

  1. 何时使用仙人掌进行测试?
  2. 什么时候不用仙人掌进行测试?
  3. 何时使用模拟对象进行测试?
  4. 什么时候不使用模拟对象进行测试?

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

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

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

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

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

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

何时使用仙人掌进行测试?

用于集成测试(涉及容器的交互)。 这或是仙人掌的最佳选择。 这些测试通常是粗粒度的......并且它们的执行速度不是很快。

什么时候不用仙人掌进行测试?

对于除集成测试之外的其他测试(甚至对于集成测试,我已经看过Cactus测试已经有一段时间了)。

何时使用模拟对象进行测试?

当你想要单独测试某些东西 ,依赖于它们。 这些测试通常是精细的,并且执行速度很快。

什么时候不使用模拟对象进行测试?

当你想编写集成测试(即测试交互 ),功能测试等时。

Cactus网站上的模拟对象与容器内测试页面总结了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM