单元测试spring-boot-starter-test

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

配置pom

junit-vintage-engine junit4

junit-jupiter-engine junit5

排除junit4使用junit5,两者在切换时要特别注意

pom 复制代码
<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的使用

java 复制代码
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 {
	@BeforeAll
	public static void beforall(){
		System.out.println("beforall***");
	}

	@Test
	void contextLoads() {
		System.out.println("run___1");
	}
	
    @Test
    void contextLoads2() {
        System.out.println("run___2");
    }

	@AfterAll
	public static void afterall(){
		System.out.println("after****");
	}

}
beforall***
run___2
run___1
after****

@ActiveProfiles("test")

需要配置resources

junit4

java 复制代码
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 {
	@Before
	public void befer(){
		System.out.println("befer***");
	}

	@Test
	public void contextLoads() {
		System.out.println("run___aa");
	}

	@Test
	public void contextLoadsa() {
		System.out.println("run___bb");
	}

	@After
	public void after(){
		System.out.println("after**");
	}
}
返回值
befer***
run___bb
after**
befer***
run___aa
after**
相关推荐
汽车仪器仪表相关领域17 小时前
Kvaser Hybrid CAN/LIN 单通道三合一总线分析仪:高性价比CAN FD/LIN集成测试利器
运维·服务器·网络·数据挖掘·数据分析·单元测试·集成测试
一路往蓝-Anbo21 小时前
第十章:TDD部署 —— Ceedling 环境的深度集成
stm32·单片机·嵌入式硬件·单元测试·测试驱动开发·tdd
川石课堂软件测试2 天前
使用mock进行接口测试教程
数据库·python·功能测试·测试工具·华为·单元测试·appium
芒鸽2 天前
鸿蒙应用测试实战:从单元测试到自动化测试
华为·单元测试·harmonyos
MC皮蛋侠客3 天前
Google Test 单元测试指南
c++·单元测试·google test
英俊潇洒美少年5 天前
前端 Jest 单元测试零基础实战:模板、提效、避坑、面试题(Vue 项目可用)
前端·vue.js·单元测试
测试员周周8 天前
【Appium 系列】第18节-重试与容错 — 移动端测试的稳定性保障
人工智能·python·功能测试·ui·单元测试·appium·测试用例
测试员周周9 天前
【Appium 系列】第17节-XMind用例转换 — 从思维导图到 YAML
java·服务器·人工智能·单元测试·appium·测试用例·xmind
一路往蓝-Anbo9 天前
第五章:如何对 HAL 库本身进行单元测试?
网络·数据结构·stm32·单片机·嵌入式硬件·单元测试·tdd