单元测试中mock的使用及mock神器jmockit实践

发表于:2013-7-24 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yydcj    来源:51Testing软件测试网采编

  在最近的r应用的单元测试中,经常需要用到mock,可以说mock在ut (unit test)中是无处不在的。而在r的ut实践中也找到了一种很简洁的mock方式,不仅解决了ut中所有需要mock的地方,而且可以很少量的代码来完成mock。详见下文。

  一.Mock的使用场景:

  比如以下场景:

  1. mock掉外部依赖的应用的HSF service的调用,比如uic,tp 的hsf服务依赖。

  2. 对DAO层(访问mysql、oracle、tair、tfs等底层存储)的调用mock等。

  3. 对系统间异步交互notify消息的mock。

  4. 对method_A里面调用到的method_B 的mock 。

  5. 对一些应用里面自己的 class(abstract, final, static),interface,annotation ,enum,native等的mock。

  二. Mock工具的原理:

  mock工具工作的原理大都如下:

  1. record阶段:录制期望。也可以理解为数据准备阶段。创建依赖的class 或interface或method ,模拟返回的数据,及调用的次数等。

  2. replay阶段:通过调用被测代码,执行测试。期间会invoke 到 第一阶段record的mock对象或方法。

  3. verify阶段:验证。可以验证调用返回是否正确。及mock的方法调用次数,顺序等。

  三. 当前的一些Mock工具的比较:

  历史曾经或当前比较流行的Mock工具有EasyMock、jMock、Mockito、Unitils Mock、PowerMock、jmockit等工具。

  他们的功能对比如下:

  从这里可以看到,当前为什么jmockit为什么这么火爆了!所以我们的UT中的mock工具也选择了目前无所不能的jmockit。

  而在使用的过程中,感觉到jmockit的 Auto-injection of mocks 及 Special fields for "any" argument matching  及各种有用的 Annotation 给测试代码精简和测试效率提升带来了实实在在的好处。


41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号