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测试工具比较相关推荐

  1. Mock测试工具篇---Fiddler的使用

    目录 一.Fiddler 介绍与安装 1.1 抓包工具作用 1.2 Fiddler抓包原理 1.3 Fiddler安装 二.Fiddler的基础使用 三.Fiddler的高级使用 3.1 设置断点 3 ...

  2. mock方法常用框架_什么是Mock测试?

    私底下接触到很多童鞋在问关于Mock测试的问题,今天就来一篇扫盲文. 在单元测试和接口测试过程中通常需要用到Mock测试,那么什么是Mock测试呢? mock 一词的英文翻译有模拟.虚拟的意思,所以M ...

  3. 属性匹配工具_测试工具链——高效构建Mock服务

    现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用"前台-中台-后台"的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够 ...

  4. 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017

    v0.9是Hitchhiker在2017农历年的最后一个版本,而起点正是刚过完2016农历年,农历2018即将到来,一年轮回,今天写点东西稍微回顾下hitchhiker的2017. 先还是说v0.9, ...

  5. java的mock测试框架

    无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...

  6. 苏宁MOCK测试桩服务建设实践

    前言 \\ 2018 年苏宁易购提出了智慧零售大开发战略,今年将新开 5000 家门店,到 2020 年,线下门店总数达 2 万家.半年来,以急速推进的大开发战略高超迭起,店面实现从城市到县镇市场全面 ...

  7. Go单测测试 — 数据库 CRUD 的 Mock 测试

    今天继续跟着李文周大佬的博客学习Go的单元测试,最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用.以及怎么对GORM做mock测试,这些等这篇学完基础后,后面再单独 ...

  8. 推荐几个 Go 测试工具和技巧让你在虎年如虎添翼

    今天带来一篇让你在虎年如虎添翼的Go测试工具和技巧的文章分享.大体内容翻译于 Go (Golang): Testing tools & tips to step up your game[1] ...

  9. 10款常用Java测试工具

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. 美 ...

最新文章

  1. 修改mysql的时间/时区
  2. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
  3. HDU5692(线段树+dfs序)
  4. 三、 vSphere 6.7 U1(三):部署AD和DNS
  5. Linux select函数用法和原理
  6. 创业者怎样掌握简便的创业机会
  7. txt 开关 csv 可通用 工具
  8. 操作系统中的用户空间和内核空间
  9. Java垃圾回收机制分析
  10. 关于nagios监控系统添加主机和服务脚本
  11. python 天勤 金叉 编程代码_基于tqsdk(天勤)编译的均线交叉与通道突破相结合的交易系统...
  12. microsoft bing browser advance search
  13. c语言结构体简单试题,C语言6结构体练习题6
  14. 计算机音乐历史,电子音乐的发展始于20世纪50年代,经历了三个发展阶段:具体音乐、()和计算机音乐。巴黎、()和米兰先 - 试题答案网问答...
  15. Adobe Acrobat XI经验总结(更于2022.5.11)
  16. 《钻石王牌》:热血青春·棒球1号位
  17. Mac安装MongoDB(极简)
  18. MacBook上有哪些适合运营人用的高效的软件工具和使用技巧
  19. Java萝卜影视4.0.5源码【完美修复完整版】
  20. ARM 开发板安装Alpine Linux (英)

热门文章

  1. 2013 11 24电脑操作
  2. 拼音翻译成阿拉伯数字_华为SO挑战赛2015年8月
  3. windows黑客编程技术之隐藏技术(进程伪装,傀儡进程,进程隐藏)
  4. Python实战——自动生成情人节对女朋友表白玫瑰花、爱心,以及用Python画一颗樱花树,愿祖国繁花与共!
  5. NR中的盲检--pdcch candidate的起始CCE位置计算
  6. 【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案...
  7. 谷歌实现移动VR“白日梦”
  8. 慕课网视频中的代码---3-4 Minst手写体识别
  9. “hulu客厅”开放,Spark培训计划报名啦
  10. Python-pip与模块安装