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

2023-10-29

一站式讲明白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)
.....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐