单元测试spring-boot-starter-test

news/2024/12/23 6:19:02/

参考博客: https://www.cnblogs.com/mzc1997/p/14306538.html

配置pom

junit-vintage-engine junit4
junit-jupiter-engine junit5
排除junit4使用junit5,两者在切换时要特别注意

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId>
</dependency>

命名规范

单元测试类的命名规范为:被测试类的类名+Test。.
单元测试类中测试方法的命名规范为:test+被测试方法的方法名+AAA,其中AAA为对同一个方法的不同的单元测试用例的自定义名称。

junit5的使用

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;@ActiveProfiles("test")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@DisplayName("Base Test junit5才有") // 显示名称通常用于IDE和构建中的测试报告
class DemoFlowfestApplicationTests {@BeforeAllpublic static void beforall(){System.out.println("beforall***");}@Testvoid contextLoads() {System.out.println("run___1");}@Testvoid contextLoads2() {System.out.println("run___2");}@AfterAllpublic static void afterall(){System.out.println("after****");}}
beforall***
run___2
run___1
after****

@ActiveProfiles(“test”)
需要配置resources
在这里插入图片描述

junit4

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
// 让 JUnit 运行 Spring 的测试环境, 获得 Spring 环境的上下文的支持
@RunWith(SpringRunner.class)
// 获取启动类,加载配置,确定装载 Spring 程序的装载方法,它回去寻找 主配置启动类(被 @SpringBootApplication 注解的)
@SpringBootTest(value={"com.example.demoflowfest.DemoFlowfestApplication"}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//这里一定要有public
public class DemoFlowfestApplicationTestsTwo {@Beforepublic void befer(){System.out.println("befer***");}@Testpublic void contextLoads() {System.out.println("run___aa");}@Testpublic void contextLoadsa() {System.out.println("run___bb");}@Afterpublic void after(){System.out.println("after**");}
}
返回值
befer***
run___bb
after**
befer***
run___aa
after**

http://www.ppmy.cn/news/1122816.html

相关文章

基于微信小程序的竞赛管理平台设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)

文章目录 前言运行环境说明学生微信端的主要功能有&#xff1a;竞赛负责人的主要功能&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前…

java字符串专项训练(手机号屏蔽)

package 字符串练习;public class 手机号屏蔽 {public static void main(String[] args) {/* 需求: 已经有一个给定的手机号,要把里面第3位到第7位数字改成**///思路: 我想到的有两种方法可解//第一种: 把原字符串先转换成char数组,然后用for循环和if来重新拼接一个字符串//第二…

2023/9/21 -- C++/QT

一、QT连接OpenCV库完成人脸识别 1.1 相关的配置 1> 该项目所用环境&#xff1a;qt-opensource-windows-x86-mingw491_opengl-5.4.0 2> 配置opencv库路径&#xff1a; 1、在D盘下创建一个opencv的文件夹&#xff0c;用于存放所需材料 2、在opencv的文件夹下创建一个…

【人工智能】机器学习的入门与提升

目录 1.入门 1.1.从何处开始 1.2.数据集 1.3.数据类型 2.平均中位数模式 2.1.均值、中值和众数 2.2.均值 2.2.1.实例 2.2.2.运行结果 2.3.中值 2.3.1.实例 2.3.2.运行结果 2.3.3.实例 2.3.4.运行结果 2.4.众数 2.4.1.实例 2.4.2.运行结果 2.5.章节总结 3.标准…

使用多线程实现批处理过程

使用多线程实现批处理过程&#xff0c;将一下数组&#xff0c;按10个一组&#xff0c;每组一个打印数据&#xff0c;并在19个线程都处理完成后输出打印次数 int[]data new int [100]; for(int i0;i <100;i){data[i] i;} import java.util.concurrent.CountDownLatch;public…

C. Tea Tasting

Problem - C - Codeforces 问题描述&#xff1a;n个人杯茶。第一个数组a表示第i杯茶有ai毫升&#xff0c;第二个数组b表示&#xff0c;第i个人品尝茶的毫升ai。总共会进行n轮品茶&#xff0c;在第j轮中&#xff0c;第i个人会品第i - j 1杯茶bi毫升&#xff0c;之后ai减少bi&a…

解决GOSUMDB sum.golang.org 连接超时

$ go get github.com/mutecomm/go-sqlcipher/v4 github.com/mutecomm/go-sqlcipher/v4v4.4.2: verifying module: missing GOSUMDB 原因&#xff1a; 首先需要弄懂&#xff0c;执行以上提到的两个命令时&#xff0c;除了会从 GOPROXY 下载压缩包&#xff0c;还会调用 GOSUMDB…

Seata流程源码梳理下篇-TC

我们上篇简单梳理了下TM、RM的一些流程&#xff08;离现在过得挺久的了&#xff0c;这篇我们这篇来梳理下TC的内容。 TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态&#xff0c;驱动全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器 定…