Mock测试工具比较
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、接口过渡、文档修改提醒、支持本地部署。
Mock测试工具比较相关推荐
- Mock测试工具篇---Fiddler的使用
目录 一.Fiddler 介绍与安装 1.1 抓包工具作用 1.2 Fiddler抓包原理 1.3 Fiddler安装 二.Fiddler的基础使用 三.Fiddler的高级使用 3.1 设置断点 3 ...
- mock方法常用框架_什么是Mock测试?
私底下接触到很多童鞋在问关于Mock测试的问题,今天就来一篇扫盲文. 在单元测试和接口测试过程中通常需要用到Mock测试,那么什么是Mock测试呢? mock 一词的英文翻译有模拟.虚拟的意思,所以M ...
- 属性匹配工具_测试工具链——高效构建Mock服务
现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用"前台-中台-后台"的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够 ...
- 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017
v0.9是Hitchhiker在2017农历年的最后一个版本,而起点正是刚过完2016农历年,农历2018即将到来,一年轮回,今天写点东西稍微回顾下hitchhiker的2017. 先还是说v0.9, ...
- java的mock测试框架
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- 苏宁MOCK测试桩服务建设实践
前言 \\ 2018 年苏宁易购提出了智慧零售大开发战略,今年将新开 5000 家门店,到 2020 年,线下门店总数达 2 万家.半年来,以急速推进的大开发战略高超迭起,店面实现从城市到县镇市场全面 ...
- Go单测测试 — 数据库 CRUD 的 Mock 测试
今天继续跟着李文周大佬的博客学习Go的单元测试,最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用.以及怎么对GORM做mock测试,这些等这篇学完基础后,后面再单独 ...
- 推荐几个 Go 测试工具和技巧让你在虎年如虎添翼
今天带来一篇让你在虎年如虎添翼的Go测试工具和技巧的文章分享.大体内容翻译于 Go (Golang): Testing tools & tips to step up your game[1] ...
- 10款常用Java测试工具
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. 美 ...
最新文章
- 修改mysql的时间/时区
- 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
- HDU5692(线段树+dfs序)
- 三、	vSphere 6.7 U1(三):部署AD和DNS
- Linux select函数用法和原理
- 创业者怎样掌握简便的创业机会
- txt 开关 csv 可通用 工具
- 操作系统中的用户空间和内核空间
- Java垃圾回收机制分析
- 关于nagios监控系统添加主机和服务脚本
- python 天勤 金叉 编程代码_基于tqsdk(天勤)编译的均线交叉与通道突破相结合的交易系统...
- microsoft bing browser advance search
- c语言结构体简单试题,C语言6结构体练习题6
- 计算机音乐历史,电子音乐的发展始于20世纪50年代,经历了三个发展阶段:具体音乐、()和计算机音乐。巴黎、()和米兰先 - 试题答案网问答...
- Adobe Acrobat XI经验总结(更于2022.5.11)
- 《钻石王牌》:热血青春·棒球1号位
- Mac安装MongoDB(极简)
- MacBook上有哪些适合运营人用的高效的软件工具和使用技巧
- Java萝卜影视4.0.5源码【完美修复完整版】
- ARM 开发板安装Alpine Linux (英)
热门文章
- 2013 11 24电脑操作
- 拼音翻译成阿拉伯数字_华为SO挑战赛2015年8月
- windows黑客编程技术之隐藏技术(进程伪装,傀儡进程,进程隐藏)
- Python实战——自动生成情人节对女朋友表白玫瑰花、爱心,以及用Python画一颗樱花树,愿祖国繁花与共!
- NR中的盲检--pdcch candidate的起始CCE位置计算
- 【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案...
- 谷歌实现移动VR“白日梦”
- 慕课网视频中的代码---3-4 Minst手写体识别
- “hulu客厅”开放,Spark培训计划报名啦
- Python-pip与模块安装