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

目录
相关文章
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1286 0
|
8月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1154 3
|
12月前
|
人工智能 Java 测试技术
SpringBoot 测试实践:单元测试与集成测试
在 Spring Boot 测试中,@MockBean 用于创建完全模拟的 Bean,替代真实对象行为;而 @SpyBean 则用于部分模拟,保留未指定方法的真实实现。两者结合 Mockito 可灵活控制依赖行为,提升测试覆盖率。合理使用 @ContextConfiguration 和避免滥用 @SpringBootTest 可优化测试上下文加载速度,提高测试效率。
596 5
|
11月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
405 0
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
539 10
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
358 0
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
346 5
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
391 6

热门文章

最新文章