我们开发中经常要编写单元测试来保证代码逻辑的正确性,但是使用spring开发时有时候我们并不想把整个spring容器跑起来。

有了mockito我们就可以方便的对一些依赖项进行mock,这样我们只需要验证需要测试的一小部分代码逻辑,测试类也会跑的很快

接下来就让我们一起来看下如何使用吧

我这里是Springboot项目

加入依赖

testImplementation 'org.springframework.boot:spring-boot-starter-test'

Service 类

public interface AddService {

long add(long a, long b);

}

@Service

public class AddServiceImpl implements AddService {

private CalculatorService calculatorService;

public AddServiceImpl(CalculatorService calculatorService) {

this.calculatorService = calculatorService;

}

@Override

public long add(long a, long b) {

return calculatorService._add(a,b);

}

}

AddServiceImpl 中包含依赖项 CalculatorService

@Service

public class CalculatorService {

long _add(long ...args){

long sum = 0;

for (long arg : args) {

sum = sum + arg;

}

return sum;

}

}

这里我们要对AddServiceImpl 的add方法进行测试,我们需要Mock依赖项CalculatorService 来保证仅测试AddServiceImpl的逻辑

package com.xms.jc.xmstools;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.assertEquals;

import static org.mockito.Mockito.*;

// 支持Mockito相关注解

@RunWith(MockitoJUnitRunner.class)

public class MockitoTest {

@Mock

CalculatorService calculatorService;

@InjectMocks // @InjectMocks 可以帮我们注入AddServiceImpl 需要的依赖 CalculatorService

AddServiceImpl addService;

@Test

public void testAdd() {

// 对Mock出来的对象方法调用给一个预期行为

when(calculatorService._add(1, 1)).thenReturn(3l);

// 断言单元测试结果

assertEquals(3, addService.add(1, 1));

}

}

这就是基本的Mocoito使用了, 单元测试是保证代码正确性的重要部分,可是经常被忽视, 后面也要更加注意写出可测试的代码,配合单元测试来保证代码的正确性

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: