SpringBoot 2.X 整合 JUnit5 及全方位使用手册

news/2024/5/19 4:24:03 标签: spring boot, junit5, 单元测试

SpringBoot 从 2.4.X 开始默认使用 JUnit5 做单元测试

导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

注解说明

注解使用位置说明
@SpringBootTest标注类启用 SpringBoot 作为测试核心(可以使用Spring的功能)
@Test标注方法表示要测试的方法
@DisplayName标注类为此测试类命名
@BeforeEach标注方法在每个单元测试之前执行
@AfterEach标注方法在每个单元测试之后执行
@BeforeAll标注方法在所有单元测试之前执行(标注静态方法)
@AfterAll标注方法在所有单元测试之后执行(标注静态方法)
@Disabled标注类或方法禁用此类或方法
@Timeout标注方法设置此方法执行超时时间
@RepeatedTest标注方法重复执行次数
@ParameterizedTest标注方法参数化测试
@ValueSource标注方法参数化测试 提供一个包含值的入参
@NullSource标注方法参数化测试 提供一个 null 的入参
@EnumSource标注方法参数化测试 提供一个枚举入参
@CsvFileSource标注方法参数化测试 提供一个 csv 文件入参
@MethodSource标注方法参数化测试 提供一个方法的返回值入参(方法返回值必须为 Stream<T> )
@Tag标注类或方法测试类别 需搭配 maven 插件使用
@ExtendWith标注类或方法为测试类或方法提供扩展类引用

使用 @SpringBootTest @Test @DisplayName

在这里插入图片描述

使用 @BeforeAll 在 Spring 之前执行

在这里插入图片描述
在这里插入图片描述

使用 @BeforeEach @AfterEach 在 test 方法前后执行

在这里插入图片描述

使用 @AfterAll 所有方法全完成 Spring 关闭之前执行

在这里插入图片描述

使用 @Disabled

在这里插入图片描述
在这里插入图片描述

使用 @Timeout

在这里插入图片描述

使用 @RepeatedTest

在这里插入图片描述

使用 @ParameterizedTest

使用 @ValueSource

在这里插入图片描述

使用 @NullSource

在这里插入图片描述

使用 @EnumSource

在这里插入图片描述

使用 @MethodSource

在这里插入图片描述

使用 @Tag 此注解需搭配 maven 插件使用

            <!-- 单元测试使用 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                	<!-- 解决运行乱码问题 -->
                	<argLine>-Dfile.encoding=UTF-8</argLine>
                    <!-- include tags -->
                    <groups>dev, local, prod</groups>
                    <!-- exclude tags -->
                    <excludedGroups>exclude</excludedGroups>
                </configuration>
            </plugin>

在这里插入图片描述
引入 local 标签排除 exclude 标签
在这里插入图片描述

在这里插入图片描述

使用 @ExtendWith 参考 @SpringBootTest 注解源码

在这里插入图片描述

断言说明

方法说明
assertEquals判断两个对象或两个原始类型是否相等
assertNotEquals判断两个对象或两个原始类型是否不相等
assertSame判断两个对象引用是否指向同一个对象
assertNotSame判断两个对象引用是否指向不同的对象
assertTrue判断给定的布尔值是否为 true
assertFalse判断给定的布尔值是否为 false
assertNull判断给定的对象引用是否为 null
assertNotNull判断给定的对象引用是否不为 null

测试 assertEquals assertNotEquals

在这里插入图片描述

测试 assertSame assertNotSame

在这里插入图片描述

测试 assertTrue assertFalse

在这里插入图片描述

测试 assertNull assertNotNull

在这里插入图片描述


http://www.niftyadmin.cn/n/1731.html

相关文章

【原创】常用元器件(数码管)选型之引脚和极性识别-cayden20221029

常用元器件(数码管)选型之极性识别 使用数码管之前&#xff0c;首先明确两个问题 1、数码管是否损坏 2、数码管极性问题&#xff08;共阴极 VS 共阳极&#xff09; 3、数码管a、b、c、d、e、f、g、DP、COM 的段判定&#xff08;aCOM这些段和实物的对应关系&#xff09; 问题…

基于javaweb的精美物流管理系统(java+springboot+vue+mysql)

基于javaweb的精美物流管理系统(javaspringbootvuemysql) 运行环境 Java≥8、MySQL≥5.7、Node.js≥10 开发工具 后端&#xff1a;eclipse/idea/myeclipse/sts等均可配置运行 前端&#xff1a;WebStorm/VSCode/HBuilderX等均可 适用 课程设计&#xff0c;大作业&#xf…

IT企业管理

1.现代意义上的管理概念 是指一个企业所拥有的人力资源财力资源物质资源和信息资源进行有效的计划、组织、领导和控制用最有效的方法实现组织目标。 2.企业管理的基本要素 金钱 方法 机器 工作精神 人力 市场 物料 3.管理者的分类 高层管理者中层管理者基层管理者 …

计算机网络【IP协议与以太网】

计算机网络【IP协议与核心协议】&#x1f34e;一.IP协议&#x1f352;1.1IPv4协议格式&#x1f352;1.2 IP协议地址&#x1f352;1.3IPv4协议的解决方案&#x1f352;1.4路由选择(了解)&#x1f34e;二.以太网协议&#x1f352;2.1以太网协议格式&#x1f352;2.2认识MTU(了解)…

C#委托传值

在winform开发过程中我们有时候需要窗体之间传值&#xff0c;传值的方式有很多种&#xff0c;今天讲一下委托传值 传值的方式有很多种比如&#xff1a; 定义全局静态变量&#xff0c;全局都可使用&#xff0c;但是当内存不够时会被回收导致变量为空。 定义父窗体公共变量传给子…

如何使用spring ResponseEntity处理http响应呢?

转自: 如何使用spring ResponseEntity处理http响应呢? 下文笔者讲述ResponseEntity处理http响应的简介说明&#xff0c;如下所示 ResponseEntity简介 ResponseEntity可以理解为一个包装类 它将Http内容包装为&#xff1a;状态码、头部信息以及相应体内容 ResponseEntity示例…

针对应用程序依赖库漏洞的攻击

微服务数据泄露 应用存储的数据基于 API进行访问&#xff0c;若应用中某个 API含有漏洞或通信未采用加密协议&#xff0c;攻击者便 可利用漏洞进行越权或中间人攻击&#xff0c;从而达到数据窃取的目的。 容器镜像为承载云原生 应用的实体&#xff0c;开发者将敏感信息写入 Do…

Vue3 除了keep-alive,还有哪些页面缓存的实现方案

引言 有这么一个需求&#xff1a;列表页进入详情页后&#xff0c;切换回列表页&#xff0c;需要对列表页进行缓存&#xff0c;如果从首页进入列表页&#xff0c;就要重新加载列表页。 对于这个需求&#xff0c;我的第一个想法就是使用keep-alive来缓存列表页&#xff0c;列表…