一站式讲明白Mockito打桩测试常用的几个接口

该博客详细讲解了Mockito在单元测试中的几个重要接口,包括Mock对象、Mock部分对象、doXxx和thenXxx的区别、Mock方法的返回值设定以及如何根据参数返回不同结果。此外,还介绍了如何设置Mock对象的属性,特别是处理Spring框架下@Autowired属性的初始化。
摘要由CSDN通过智能技术生成

一站式讲明白Mockito打桩测试常用的几个接口


本文不求讲的全面,只求讲的实用,拿来就能用。另外本文没有涉及到异常相关的打桩,下次再续。

1. 几个术语:

真实对象:代码中定义的class,并使用new方法初始化的对象

mock对象:模拟真实对象的对象,采用Mockito初始化的对象

真实方法:class中定义的方法

mock方法:采用Mockito定义的方法,测试时用来替代真实方法

打桩:Stub,就是把所需要的测试数据塞到一个对象里,重点关注测试目标的方法,对于不易构造或者不易获取对象和方法都采用桩来代替,这个过程就叫打桩。Mockito的doXxx方法返回值就是Stubber类型。

2. Mock对象和Mock部分对象(partial-mock)

场景

Mock对象的场景是:测试过程中,对于某些不容易构造或者不容易获取的对象,就可以用一个虚拟的对象来创建以便测试。
Mock部分对象的场景:希望调用部分mock的方法,其余的方法调用真实的方法。

接口

// mock整个对象,对函数掉调用都使用mock的方法,除非显示的调用doCallRealMethod()
Mockito.mock(Class<T> classToMock, MockSettings mockSettings) 
//mock部分对象,对函数的调用均执行真正的方法,除了使用doXxx或者thenXxx的部分。
Mockito.spy(Class<T> classToSpy)

实例

import org.mockito.Mockito;

// 默认就执行mock方法
JobManager jobManager = Mockito.mock(JobManager.class);
// 除了在测试用例中打桩mock的方法以外,其他都执行真实的方法
JobManager jobManager = Mockito.spy(JobManager.class);

3. 否真正执行方法,doXxx和thenXxx

场景

  1. doXxx的接口都是不会执行对象的真实方法,直接执行doXxx中的方法/值/异常。
  2. thenXxx的接口都是会先执行对象的真实方法,然后返回thenXxx中的处理逻辑/值/异常。

接口

Mockito.doReturn(Object toBeReturned)
Mockito.doAnswer(Answer answer)
Mockito.doThrow(Throwable... toBeThrown)
......
thenReturn(T var1)
thenAnswer(Answer<?> var1)
thenThrow(Throwable... var1)
......

实例

// doXxx公式:doXxx(返回值/方法).when(mock对象).对象的方法(入参的类型),
// doXxx如果没有逻辑也可以doNothing,例如:
Mockito.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值