什么是Mock?
在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象。程序员通常创造模拟对象来测试其他对象的行为,很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为。

为什么要使用Mock?
在单元测试中,模拟对象可以模拟复杂的、真实的(非模拟)对象的行为, 如果真实的对象无法放入单元测试中,使用模拟对象就很有帮助。

真实对象的行为是不确定的(例如,当前的时间或当前的温度);
真实对象很难搭建起来;
真实对象的行为很难触发(例如,网络错误);
真实对象速度很慢(例如,一个完整的数据库,在测试之前可能需要初始化);
真实的对象是用户界面,或包括用户界面在内;
真实的对象使用了回调机制;
真实对象可能还不存在;
真实对象可能包含不能用作测试(而不是为实际工作)的信息和方法。
例如,一个可能会在特定的时间响铃的闹钟程序可能需要外部世界的当前时间。要测试这一点,测试一直要等到闹铃时间才知道闹钟程序是否正确地响铃。如果使用一个模拟对象替代真实的对象,可以变成提供一个闹铃时间(不管是否实际时间),这样就可以隔离地测试闹钟程序。

Mockito的简单使用
Mockito是GitHub上使用最广泛的Mock框架,并与JUnit结合使用.Mockito框架可以创建和配置mock对象.使用Mockito简化了具有外部依赖的类的测试开发!

一般使用Mockito的步骤:

1.模拟任何外部依赖并将这些模拟对象插入测试代码中
2.执行测试中的代码
3.验证代码是否按照预期执行

配置依赖
如果我们在Java项目中使用的是Gradle编译,应在Gradle的构建文件中添加:


特别的,对于Android项目:

可以验证我们的交互逻辑

可以在代码中打桩(stub)

执行结果:

Moke和Mockito简介相关推荐

  1. mock java_JAVA的mock工具mockito简介

    在测试过程中,难免会碰到交互的外围系统不给力的情况,这时候mock就派上用场了,前段时间跟同学聊到这块的时候,他向我推荐mockito这个mock工具,试用了一下,确实很好用,这里给大家介绍下这款工具 ...

  2. Mock和Mockito简介

    本篇对Mock和Mockito做了简单的介绍,并列出了简单的示例. 使用Mockito需要基于JUnit,所以不了解JUnit的同学请先参考一下之前JUnit的文章. 什么是Mock? 在面向对象程序 ...

  3. Mock工具之Mockito实战

    在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行.为了解决这类问题我们引入 ...

  4. mockito mock void方法_用过举手!SpringBoot 单元测试利器Mockito

    Mockito 是一种 Java mock 框架,他主要是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean.模拟方法的返回值.模拟抛出异常...等,在了解 Mockito 的具 ...

  5. 单元测试系列之五:Mock工具之Mockito实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...

  6. Android 单元测试 Mockito使用详解

    简介 笔者的Android单元测试相关系列: Android单元测试:Mockito使用详解 Android单元测试:使用本地数据测试Retrofit Android单元测试:测试RxJava的同步及 ...

  7. android mockito,mockito

    PowerMock相关2021-05-27 19:32:24 Mock外部服务调用 PowerMockito.when([外部类].[调用的方法](Mockito.anyInt(),Mockito.a ...

  8. 【翻译】Java使用Mockito进行Mock测试

    2019独角兽企业重金招聘Python工程师标准>>> 我们所有人在编写单元测试的时候面临的巨大挑战是模块对其他组件的依赖.同时花费大量的时间和精力去配置依赖的组件环境是一件出力不讨 ...

  9. Mockito 入门

    目录 1.什么是 Mock 测试? 2.Mockito简介 3.在 SpringBoot 单元测试中使用 Mockito 3.1 Maven依赖: 3.2 UserService.java 3.3 U ...

最新文章

  1. 动态DNS——本质上是IP变化,将任意变换的IP地址绑定给一个固定的二级域名。不管这个线路的IP地址怎样变化,因特网用户还是可以使用这个固定的域名 这样看的话,p2p可以用哇...
  2. Android中shape的使用
  3. java 数组练习题,Java练习题 - 数组01
  4. [SpringSecurity]web权限方案_用户授权_注解使用
  5. 远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助...
  6. Taro+react开发(23)--componentWillReceiveProps
  7. Scala学习笔记(1)-环境搭建
  8. JavaScript详细解析
  9. Detectron2安装教程
  10. 2022年度总结:除旧迎新,继往开来!
  11. 1-14 Burpsuite Repeater介绍
  12. 2022年湖南医院三基考试泌尿外科综合模拟题及答案
  13. 每日C语言代码(The fourth day)——冒泡排序与地址传递
  14. Week12—最大匹配括号数
  15. 一条狗的死亡,引发3亿网友愤怒!希望这条黑科技 “汪星人” 能从小培养人的爱心 | 钛空智慧星球推荐
  16. 【《Real-Time Rendering 3rd》 提炼总结】(九) 第十章 · 游戏开发中基于图像的渲染技术总结
  17. canvas封闭图形填充与
  18. 创作者如何拥抱Web3?
  19. linux常用命令【原创】
  20. IBM咨询提出无边界企业,必须了解的数字化转型大趋势

热门文章

  1. 当Android Studio安装时提示couldn‘t detect a java development kit
  2. 计算机硬件的漏洞,震惊了硬件圈子的CPU漏洞,到底是个什么鬼?
  3. asp.net viewState
  4. 【阅读笔记】程序员的自我修养
  5. 优酷在计算机上无法联网,优酷路由宝192.168.11.1(wifi.youku.com)打不开
  6. mac下使用appium连接夜神模拟器,包含百度云盘安装包链接
  7. 纯文本笔记软件Simplenote Mac
  8. [SP104 HIGH]Highways [HEOI2015]小Z的房间——矩阵树定理入门
  9. c语言编黑白棋游戏,怎样编制黑白棋(2)
  10. uni-app轮播图实现之swiper