- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Junitmockito解耦合测试讲义
Junit mockito解耦合测试
Mock测试是单元测试的重要方法之一。
1、相关网址
官网:/
2、什么是Mock测试
Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。
Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。
当我们需要测试A类的时候,如果没有 Mock,则我们需要把整个依赖树都构建出来,而使用 Mock 的话就可以将结构分解开,像下面这样:
只需提供mock B 和mock C 的返回即可的,不需要知道其底层具体是怎么实现的。
3、mock使用的场景和好处
真实的对象具有不确定的行为,产生不可预测效果。(如:股票行情,天气预报),我们经常会遇到测试的时候需要去数据库中查询某些数据,但是未知的,就算是知道的,假如有一天数据被删除了或者被修改了,很难进行回归测试。
真实对象很难被创建的,真实对象的某些行为很难被触发。
真实对象实际上还不存在的。如:某个接口依赖其他系统的服务或者该接口还没开发出来。我们就可以使用mock假设其返回的数据进行测试。而不用等待其开发完接口,我们再进行测试。提高开发的效率
4、一些特点
可以 mock 具体类而不单止是接口
一点注解语法糖 - @Mock
干净的验证错误是 - 点击堆栈跟踪,看看在测试中的失败验证;点击异常的原因来导航到代码中的实际互动。堆栈跟踪总是干干净净。
允许灵活有序的验证(例如:你任意有序 verify ,而不是每一个单独的交互)
支持“详细的用户号码的时间”以及“至少一 次”验证
灵活的验证或使用参数匹配器的 stub ( anyObject() , anyString() 或 refEq() 用于基于反射的相等匹配)
允许创建 自定义的参数匹配器 或者使用现有的 hamcrest 匹配器
5、maven配置
1)Junit的maven
复制代码
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.11/version
scopetest/scope
/dependency
复制代码
2)mockito的maven
复制代码
dependency
groupIdorg.mockito/groupId
artifactIdmockito-all/artifactId
version1.9.5/version
scopetest/scope
/dependency
复制代码
6、使用
首先我们需要引入静态资源
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
1)验证行为
复制代码
@Test
public void verify_behaviour(){
//模拟创建一个List对象
List mock = mock(List.class);
//使用mock的对象
mock.add(1);
mock.clear(); //清空mock对象
//验证add(1)和clear()行为是否发生
verify(mock).add(1);
verify(mock).clear();
}
复制代码
2)模拟我们所期望的结果
复制代码
public void when_thenReturn(){
//mock一个Iterator类
Iterator iterator = mock(Iterator.class);
//预设当iterator调用next()时第一次返回hello,第n次都返回world
when(iterator.next()).thenReturn(hello).thenReturn(world);
//使用mock的对象
String result = iterator.next() + +
您可能关注的文档
- JIT精益生产实务讲义.ppt
- JIT生产与大规模定制.ppt讲义.ppt
- JJL14方法验证报告讲义.doc
- JGJT23-2011回弹法检测混凝土抗压强度技术规程培讲义.ppt
- jpa_注解_手册讲义.doc
- jishu1_2_2_ppt_1讲义.ppt
- JGJ59-2011专题讲座讲义.ppt
- JJF-1033-2008-《计量标准考核规范》宣贯讲义讲义.ppt
- JQuery框架及Ajax技术练习讲义.doc
- JQY说明书讲义.doc
- 全文可编辑worldreportmarket-Brand KPIs for online education services: Skillshare in India-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for online education services: LinkedIn Learning in Brazil-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for online education services: mondly in Germany-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for online betting: Rabona in Germany-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for salty snacks Bikanervala in India-外文版培训课件(2025.2).ppt
- 全文可编辑worldreportmarket-Brand KPIs for salty snacks Doritos in the United Kingdom-外文版培训课件(2025.2).ppt
- 全文可编辑worldreportmarket-brand kpis for restaurant chains Nando’s in the united kingdom-外文版培训课件(2025.2).ppt
- 全文可编辑worldreportmarket-Brand KPIs for online education services: Babbel in the United Kingdom-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for online education services: Codecademy in the United Kingdom-英文培训课件2025.5.ppt
- 全文可编辑worldreportmarket-Brand KPIs for online education services: edX in Mexiko-英文培训课件2025.5.ppt
最近下载
- 电能“发、输、变、配、用”五环节简介.pptx VIP
- 先进算力中心建设规划方案.docx VIP
- 安装钳工基础知识全集课件.ppt VIP
- 部编版六年级语文上册第三单元 习作_____让生活更美好 课件(共32张PPT).pptx VIP
- 医疗器械唯一标识管理制度(UDI).docx VIP
- 感术行动专项实施方案.docx VIP
- 企业案例广州超算中心 企业案例广州超算中心、项目建设规划、项目需求分析 1.3项目建设规划.docx VIP
- 音频处理软件:Adobe Audition二次开发_17.社区资源与支持.docx VIP
- 数控铣床第一章 数控铣床概述.ppt VIP
- 偏差报告单【范本模板】.doc VIP
文档评论(0)