需求千万条,质量第一条——单元测试第三章

本文介绍了在单元测试中遇到复杂依赖时如何使用Mockito创建mock对象简化测试。讲解了Mockito的安装、mock对象的创建方法,以及关键的`verify()`和`when().thenReturn()`方法,用于验证无返回值的方法执行和指定返回值。还提到了`verifyNoMoreInteractions()`方法用于确保所有调用的方法都已验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面都已经讲完了junit,还需要什么?在测试的时候有的对象难以获取,但是又需要依赖这个对象。
举例什么的情况呢?
第二个类的方法需要一个类对象作为参数,而这个参数又很难实现或者又要依赖第三个对象

 public NumberTest(A a) {
     //对A对象进行操作
     }
//将numberTest对象作为参数传入
public int addNumber(NumberTest numberTest){
        return numberTest.getA()+numberTest.getB();
    }

如上所述,那么测试一个方法就需要创建三个对象,对于单元测试来说就有点太过于麻烦了,所以需要新的测试类库——Mock。
首先依赖的方式:testImplementation ‘org.mockito:mockito-core:2.11.0’
这个类库可以创建一个假的对象,这个对象还可以做对象的事,并且还可以完成验证没有返回值的方法。
首先创建mock对象有两种方法:
第一种通过mock的方法:
Class cls=mock(mock的对象.class)
第二种通过注解的方式:
@Mock
但是要初始化注解:MockitoAnnotations.initMocks(this);
Mock类有两个重要的方法:
verify()是mock中验证没有返回值的测试方法。
when().thenReturn();是将某种方法指定返回值

为什么说两个重要的方法呢?
在这里插入图片描述
下面这张图片就是效果图,因为使用了mock注解就会发现,下面直接调用这个对象的时候没有空指针的异常,大家可以试试在上述初始化的mock注解去掉或者去掉@Mock的注解,都会报空指针的异常。
在这里插入图片描述
怎么来验证没有返回值的方法呢?

public void var(){
        System.out.print("ssss");
    }

在这里插入图片描述
只有执行一次,使用verify就可以验证,也可以验证几次执行。

在这里插入图片描述
比如上图中,在方法里加入参数atLeast,表明最少执行几次,但是由于只执行了一次,所以会报错。

注意:verify()参数是mock对象,后面才是被验证的方法。

假如有返回值怎么办呢?
在这里插入图片描述
由上图可以得知,when().thenReturn(),可以返回值。还有其他的then方法。
起亚的do().when()的方法,还有其他的API可以考虑的看一下。

其他的方法
verifyNoMoreInteractions():所有被调用的方法是否都被验证了。
在这里插入图片描述
在这里插入图片描述
对比上述两张图,当所有方法被验证的,调用verifyNoMoreInteractions()方法的时候才会表明是正确的。
这个方法可以验证新增的方法有没有被验证。

是否在Mock有了解呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值