Mock测试工具比较

来源:互联网 发布:建立客户档案软件 编辑:程序博客网 时间:2024/05/29 02:55

Java Mock测试工具比较

最近,在做一个Java Web的项目,项目中需要集成一套Mock测试工具。随即对市面上的mock测试工具进行了调研,下面是调研结果。其中,mock测试工具分为单元测试级别的mock工具和接口测试级别的mock工具。

1.单元测试级别的mock工具

目前,这个级别的mock工具有easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit等等.
关于它们的优劣势在JMockit官网上给出一个简单的比较,结果如下图所示。这个结果可能会偏向JMockit,我们可以作为参考。
Features:

Feature EasyMock jMock Mockito UnitilsMock PowerMock(EasyMock) PowerMock(Mockito) JMockit Invocation count constraints(调用数限制) √ √ √ √ √ √ Recording strict expectations(记录严格的预期结果) √ √ √ √ Explicit verification(显式验证) √ √ √ √ Partial mocking(部分mock) √ √ √ √ √ √ Easier argument matching based on properties of value objects(基于值对象属性的简化参数匹配) √ √ √ √ √ √ Cascading mocks(级联mock) √ √ √ √ Mocking of multiple interfaces(多接口mock) √ √ √ Mocking of annotation types(注释类型mock) √ √ √ √ √ Partially ordered expectations √ √ Auto-injection of mocks(mock的自动注入) √ √ √ √ Mocking of enums(枚举的mock) √ √ √ Declarative mocks for test methods (mock parameters) √ Mocking of unspecified implementation classes(未实现接口类的mock) √ “Duck typing” fakes for integration tests √ Total 4/14 4/14 8/14 6/14 5/14 9/14 14/14

Qualities:

Feature EasyMock jMock Mockito UnitilsMock PowerMock(EasyMock) PowerMock(Mockito) JMockit Argument matchers for some parameters only, not all √ √ No method call to switch from record to replay(切换记录回放时无方法调用) √ √ √ √ No extra code for implicit verification(隐式验证没有额外代码) N/A N/A N/A √ No extra “prepare for test” code(没有额外的”prepare for test”代码) √ √ √ √ √ No need to use @RunWith annotation or base test class(不需要用@runwith注解和测试基类) √ √ √ √ Consistent syntax between void and non-void methods(空和非空方法的语法一致) √ √ √ Mocking of constructors and final/static/private methods(构造函数、final、static和private方法的mock) √ √ √ Mocking of “new-ed” objects(“new-ed”对象的mock) √ √ √ Support for covariant return types √ Single jar file in the classpath is sufficient to use mocking API(在classpath中的单个jar文件就能够使用mockAPI √ N/A N/A √ Total 2/10 3/10 4/9 4/9 2/9 3/8 10/10

就目前来讲,是mockit+powermock、JMockit这两种工具使用人数较多。JMockit的功能最为完善,mockit+powermock的用户体验相对较好一点。

2.接口测试级别的mock工具

接口级别的mock工具完成的主要功能是对一个用户的请求,模拟server返回一个接口的响应数据。目前,这类的主流mock工具主要有以下几种:
(1)Wiremock
github地址: https://github.com/tomakehurst/wiremock
特点:
- 支持Http响应头,匹配URL,heade和body内容模式
- 请求验证
- 可以作为一个独立的进程或者WAR app在单元测试中运行
- 可以通过Java API,Json文件和JSON over HTTP配置
- 有记录/回放功能
- Fault injection
- 可以作为请求检查和替换的浏览器代理
- 有状态的行为模拟
- 可配置响应延迟
(2)Mockserver
github地址:https://github.com/jamesdbloom/mockserver
特点:
- 能够mock HTTP或者HTTPS 的server或者服务
- 当一个请求匹配 expectation时能够返回一个mock response
- 当一个请求匹配 expectation时能够forward 一个请求
- 当一个请求匹配 expectation时能够执行一个回调(callback),允许动态地创建response
- 支持Request验证
(3)Moco
github地址:https://github.com/dreamhead/moco
特点:
- an easy setup stub framework.
- 支持HTTP、HTTPS、SOCKS
- 支持单元测试
(4)Mock.js
github地址:https://github.com/nuysoft/Mock/tree/refactoring
特点:
- 根据数据模板生成整合后的数据
- 对于Ajax请求提供request/response mocking
(5)RAP
github地址:https://github.com/thx/RAP
特点:
- Web接口管理工具,接口自动化,MOCK数据自动生成,自动化测试
- 能够通过分析接口结构自动生成Mock数据、校验真实接口的正确性
- 阿里产品,功能完善、结合了文档、Mock.js、可视化、Rest、接口过渡、文档修改提醒、支持本地部署。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打印机打出来的字两边少怎么办 wps表格分页时表格断了怎么办 word里的表格一页放不下怎么办 表格上红色的字不能删除怎么办 渐变区的选择框变得很大怎么办 用乐秀编辑短片后两边有边框怎么办 安卓手机相机图标没有了怎么办 三星s6不充电就死机了怎么办 三星s7通话感应器不管用了怎么办 卡贴苹果8p一直跳激活怎么办? 宝宝添了小狗添过的袋子怎么办 猫咪卡在屋顶的缝隙里怎么办 大臂的图案纹小了怎么办 双面板已经贴片还要插件后焊怎么办 黑板摔在地上有木头屑怎么办 白衣服蓝袖子漂花了怎么办 白衣服泡了一夜袖子发黄怎么办 小孩的胳膊肘关节处摔断开了怎么办 生完孩子以后奶头总有脏东西怎么办 月经有黑乎乎的脏东西下不来怎么办 四季梅叶子打卷花从粉变白怎么办 新移栽的竹子出来太细怎么办 土培富贵竹长得太高了怎么办 毛竹加工厂被环保查了该怎么办? 领养姐姐家的孩子怎么办领养手续 孩子喝了点杯子变质发霉的水怎么办 杯子发霉没洗干净喝了水怎么办 小孩的咪咪头没有突出来怎么办 手被竹子刺了肿了怎么办 紫竹刚栽叶子发枯怎么办能活吗 移栽大田的水稻过施了氮肥怎么办 股骨术后六十天有小量骨痂怎么办 被桃树上的蜂蜜咬了怎么办 照片回收站密码找不回来了怎么办 扣扣空间照片回收站密码忘了怎么办 我眼睛近视了不想戴眼镜怎么办 微信聊天对方只回一个字怎么办 大学室友都不是自己喜欢的人怎么办 超轻粘土粘在衣服上怎么办 粽子昨晚煮好今日发现不够熟怎么办 5岁宝宝左眼轻微散光怎么办光