Mockito + Junit + SpringBoot进行单元测试

简介: Mockito + Junit + SpringBoot进行单元测试

我们开发中经常要编写单元测试来保证代码逻辑的正确性,但是使用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使用了, 单元测试是保证代码正确性的重要部分,可是经常被忽视, 后面也要更加注意写出可测试的代码,配合单元测试来保证代码的正确性

目录
相关文章
|
3月前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
396 2
|
3月前
|
XML Java 测试技术
【SpringBoot系列】初识Springboot并搭建测试环境
【SpringBoot系列】初识Springboot并搭建测试环境
97 0
|
4天前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
25 10
|
1月前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。
|
2月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
60 4
|
3月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
59 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
2月前
|
Java 测试技术 数据库连接
使用Spring Boot编写测试用例:实践与最佳实践
使用Spring Boot编写测试用例:实践与最佳实践
118 0
|
3月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
43 5
|
3月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
186 0
|
4月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
84 6