java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot集成Junit单元测试

SpringBoot集成Junit单元测试实践

作者:JiaHao汤

这段文章详细介绍了@SpringBootTest注解在SpringBoot测试中的应用,并对比了JUnit4和JUnit5的主要特性与使用方法,涵盖测试环境配置、属性注入及集成测试场景,同时介绍了JUnit5作为SpringBoot测试框架的集成方式和常用注解,帮助开发者更好地理解和应用测试框架

@SpringBootTest 注解

@SpringBootTest 注解作用是指示测试类是一个 SpringBoot 应用程序的集成测试类,用于加载完整的应用程序上下文,包括所有的配置、组件和依赖项。

它会模拟启动整个应用程序,并提供一个可用于执行集成测试的应用程序上下文。

@SpringBootTest 注解可以配置以下属性:

使用 @SpringBootTest 可以编写集成测试,测试整个应用程序的各个组件、依赖项和配置的交互。它提供了一个真实的应用程序上下文,能够模拟和测试实际运行时的行为。

集成 Junit 5

JUnit 5 是 JUnit 框架的第五个主要版本,是用于 Java 编程语言的一个广泛使用的单元测试框架。相较于之前的版本,JUnit 5 有许多显著的改进和新特性,以更好地满足现代 Java 开发的测试需求。

以下是 JUnit 5 的组成部分:

组成部分说明
JUnit Platform在 JVM 上启动测试框架的基础,不仅支持JUnit 自制的测试引擎,其他测试引擎也都可以接入。
JUnit Jupiter提供了 JUnit 5 的新的编程模型,是 JUnit 5 新特性的核心。内部包含了一个测试引擎,用于在 JUnit Jupiter 上运行。
JUnit Vintage由于 JUnit 已经发展多年,为了照顾老的项目,JUnit Vintage 提供了兼容 JUnit 4.x、JUnit 3.x 的测试引擎。

引入 Junit 5

SpringBoot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,所以对于 SpringBoot 2.2.0 及以上的版本而言,只需要在 pom.xml 中引入 spring-boot-starter-test 模块即可支持对 Junit 5 单元测试框架的集成:

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

使用 JUnit 5

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = xxx.class)
public class MyTest {
    
    @Test
    void myTest(){
        // ...
    }
    
}

JUnit 5 常用测试注解

注解说明
@Test单元测试
@DisplayName为测试类或测试方法设置展示名称
@BeforeEach在每个单元测试之前执行
@AfterEach在每个单元测试之后执行
@BeforeAll在所有单元测试之前执行,方法必须用 static 关键字声明为静态方法,否则会报错
@AfterAll在所有单元测试之后执行,方法必须用 static 关键字声明为静态方法,否则会报错
@Tag表示单元测试的类型
@Disabled表示测试类或测试方法不执行
@Timeout表示测试方法运行如果超过制定时间将返回错误
@ExtendWith为测试类或测试方法提供扩展类引用
@RepeatedTest重复执行的次数
@ParameterizedTest + @ValueSource携带参数的单元测试

集成 Junit 4

引入 Junit 4

方式一

SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖(无法使用 Junit 4 功能,如 @Test 等),如果需要兼容 JUnit 4 需要自行引入。

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
    		<artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

方式二

直接引入 JUnit 4 框架:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>

使用 JUnit 4

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.junit.Test;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class LocalTest {
    @Test
    void test(){
        // ...
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文