单元测试进阶-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,有兴趣可以自己去了解

相关推荐
测试老哥13 小时前
自动化测试实例:Web登录功能性测试(无验证码)
自动化测试·软件测试·python·selenium·测试工具·职场和发展·单元测试
从零开始的-CodeNinja之路14 小时前
【软件测试】详解软件测试中的测试级别
测试工具·单元测试·集成测试·可用性测试·测试覆盖率
程序员雷子1 天前
接口自动化测试数据怎么来?涉及资金的接口如何在线上回归?
功能测试·selenium·测试工具·jmeter·单元测试·测试用例·postman
雷神乐乐3 天前
JavaSE——lombok、juint单元测试、断言
java·单元测试·断言·juint
通义灵码3 天前
如何去编写一个好的单元测试,通义灵码是如何快速生成单元测试?
java·ide·vscode·单元测试·visual studio·通义灵码
虫本初阳3 天前
【Java】注解与单元测试的使用【主线学习笔记】
java·学习·单元测试
chusheng18404 天前
Python 如何使用 unittest 模块编写单元测试
开发语言·python·单元测试
程序员威子4 天前
2种方法,教你使用Python实现接口自动化中的参数关联
python·功能测试·selenium·单元测试·自动化·测试用例·压力测试
MJH8274 天前
JMeter全流程性能测试实战!
自动化测试·功能测试·jmeter·单元测试·appium·性能测试·测试工程师