当前位置: 首页 > news >正文

单元测试进阶-Mock使用和插桩

目录

一、基本概念

1、Mock

2、插桩(Sutbbing)

二、参考文章


一、基本概念

1、Mock

Mock的作用就是不直接new对象,而是使用Mock方法或者注解Mock一个对象。

这个对象他不是new创建的对象,Mock对该对象的一些成员变量和方法等等进行了注入,可以配合插桩直接调用其他方法而不用管对象内部是如何赋值、如何初始化等等问题。

比如TpBaseService类,它有一个getService方法,作用是获取服务。在我的单元测试中,我需要使用TpBaseService类的对象去调用getService方法。

①常规做法

常规的单元测试是通过New一个TpBaseService类的对象,这里假设为tpBaseService去调用getService方法。

②Mock做法

但假如getService方法需要一些私有的成员变量输入,比如一个context参数,这个参数是TpBaseService类的私有成员变量,当我使用常规单元测试去New对象时,我需要考虑到这个context私有成员变量的值。但如果我使用Mock对象,就可以省略去这一步骤。

2、插桩(Sutbbing)

插桩就是在Mock的前提下,对某个方法进行黑盒控制。

也就是说,我给出输入和输出,在Mock的前提下对某个方法使用插桩后,不需要考虑这个方法内部是怎么实现的,直接给出输入就返回我需要的输出,就像一个黑盒一样。甚至,可以实现抛出异常(我想抛就抛,想正常输出就输出)

从直观感受来说,插桩就是像是直接跳过了一条“无法执行”的语句(这条语句通常是调用了外系统接口或者是使用了数据库方法)

二、参考文章

Mock和插桩的基本使用,有很多例子:

【码农教程】手把手教你Mockito的使用_mockito教程-CSDN博客

给出了插桩的基本语句,例子更直观:

单元测试框架——Mockito之stubbing语法_单元测试stubbing-CSDN博客

若有读者需要更加详细的解释,可以后面再出一篇详细文章说明Mock和插桩的语法和使用等等

另外,以上提到的Mockito接口一般是针对public方法和protected方法, PowerMockito可以对私有方法、静态方法甚至是构造器进行Mock,有兴趣可以自己去了解

http://www.lryc.cn/news/451675.html

相关文章:

  • 适用conda安装虚拟的python3环境
  • 【C++】“list”的介绍和常用接口的模拟实现
  • 第九篇——数列和级数(二):传销骗局的数学原理
  • docker如何查看容器的ip
  • Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
  • 设计模式(2)工厂模式
  • 二分查找算法专题(1)
  • ACP科普:SoS不是救命
  • C++:模拟实现vector
  • Leecode SQL 184. Department Highest Salary 找出tie
  • [Redis][典型运用][缓存]详细讲解
  • GPG error golang 1.19
  • Linux如何查看每个文件及文件夹的大小
  • Word样式的同步与重置
  • 力扣 —— 跳跃游戏
  • SOCKS5代理和HTTP代理哪个快?深度解析两者的速度差异
  • 工具介绍---效率高+实用
  • 本地部署开源在线PPT制作与演示应用PPTist并实现异地远程使用
  • leetcode_238:除自身以外数组的乘积
  • 网络协议详解--IPv6
  • 阿里云域名注册购买和备案
  • 【经典机器学习算法】谱聚类算法及其实现(python)
  • 【Linux】Linux环境基础开发工具使用
  • Halcon基础系列1-基础算子
  • 【AI大模型】深入Transformer架构:编码器部分的实现与解析(上)
  • spring学习日记-day7-整合mybatis
  • 【YOLO目标检测行人与车数据集】共5607张、已标注txt格式、有训练好的yolov5的模型
  • JMeter中线程组、HTTP请求的常见参数解释
  • 优化Mysql
  • 如何使用MethodChannel通信