springboot--单元测试

单元测试

  • 前言
  • 1、写测试要用的类
  • 2、写测试要用的类
  • 3、运行测试类
  • 4、spring-boot-starter-test默认提供了以下库
    • [4.1 junit5](#4.1 junit5)
      • [4.1.1 @DisplayName:为测试类或者测试方法设置展示名称](#4.1.1 @DisplayName:为测试类或者测试方法设置展示名称)
      • [4.1.2 @BeforeAll:所有测试方法运行之前先运行这个](#4.1.2 @BeforeAll:所有测试方法运行之前先运行这个)
      • [4.1.3 @BeforeEach:每个测试方法运行之前运行](#4.1.3 @BeforeEach:每个测试方法运行之前运行)
    • [4.2 断言](#4.2 断言)
      • [4.2.1 Assertions.assertEquals](#4.2.1 Assertions.assertEquals)
      • 4.2.2嵌套测试
      • [4.2.3参数话测试 @ParameterizedTest](#4.2.3参数话测试 @ParameterizedTest)

前言

Spring boot 提供一系列测试工具集及注释方便我们进行测试

spring-boot-test提供核心测试能力,spring-boot-test-autoconfigure 提供测试的一些自动化配置

我们只需导入spring-boot-starter-test即可整合测试


1、写测试要用的类

javascript 复制代码
package com.example.boot306demo.service;

import org.springframework.stereotype.Service;

/**
 * @author jitwxs
 * @date 2023年11月15日 20:27
 */
@Service
public class HelloService {
    public int sum(int a,int b){
        return a+b;
    }
}

2、写测试要用的类

自动注入任意组件即可测试

javascript 复制代码
package com.example.boot306demo;

import com.example.boot306demo.service.HelloService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest  //具备测试springboot应用容器中所有组件的功能
class Boot306DemoApplicationTests {
    @Autowired //自动注入任意组件即可测试
    HelloService helloService;

    @Test
    void contextLoads() {
        int sum = helloService.sum(1,2);
        System.out.println(sum);
    }
}

3、运行测试类

4、spring-boot-starter-test默认提供了以下库

junit5/spring Test/Assertj/Hamcrest/Mockito/JSONassert/jsonPath

4.1 junit5

官方英文文档为:https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations

中文文档:https://gitee.com/liushide/junit5_cn_doc/blob/master/junit5UserGuide_zh_cn.md

4.1.1 @DisplayName:为测试类或者测试方法设置展示名称

4.1.2 @BeforeAll:所有测试方法运行之前先运行这个

4.1.3 @BeforeEach:每个测试方法运行之前运行

4.2 断言

Assertions

4.2.1 Assertions.assertEquals



4.2.2嵌套测试

junit5 可以通过java中的内部类和@Nested注解实现嵌套测试,从而可以更好的把相关的测试方法组织在一起,在内部类中可以使用@BeforeEach和@AfterEach注解,而且嵌套的层次没有限制

4.2.3参数话测试 @ParameterizedTest

javascript 复制代码
@ParameterizedTest //参数话测试
    @ValueSource(strings = {"one","two","three"})
    @DisplayName("参数话测试")
    public void parameterizedTest(String string){
        System.out.println(string);
        Assertions.assertTrue(StringUtils.isNotBlank(string));
    }


相关推荐
凯芸呢3 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
小雨的光3 小时前
QuickEsView
spring boot·elasticsearch·es可视化
竹竹零3 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd3 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring
float_com3 小时前
【java基础语法】---- 综合训练
java
韩立学长3 小时前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
Dyan_csdn4 小时前
springboot系统设计选题3
java·spring boot·后端
sheji34164 小时前
【开题答辩全过程】以 基于Java的旅游网站的设计与开发为例,包含答辩的问题和答案
java·开发语言·旅游
ABdolphin4 小时前
Spring-cloud 主键Eureka
java·云原生·eureka
Aesopcmc4 小时前
Maven打包时指定输出路径、以时间戳命名包名和路径名,结合IDEA以指令脚本方式动态配置输出目录
java·自动化·maven·intellij-idea