当前位置: 首页 > news >正文

#不同版本下,单元测试的注解使用

不同版本的 Spring Boot 中,单元测试的注解略有变化,主要体现在 JUnit 版本的升级Spring Test 相关注解的演变。下面是各个版本的 测试注解对比


✅ 1. Spring Boot 1.x(JUnit 4)

Spring Boot 1.x 主要基于 JUnit 4,测试类通常使用:

  • @RunWith(SpringRunner.class) 👉 指定 JUnit 运行器
  • @SpringBootTest 👉 加载完整的 Spring Boot 上下文
  • @Test 👉 JUnit 4 的测试方法标记

📌 示例代码

@RunWith(SpringRunner.class) // 指定 Spring 测试运行器
@SpringBootTest // 加载 Spring Boot 上下文
public class VoucherOrderServiceTest {

    @Test
    public void testCreateVoucherOrder() {
        System.out.println("测试 Spring Boot 1.x");
    }
}

✅ 2. Spring Boot 2.x(JUnit 5)

Spring Boot 2.x 默认支持 JUnit 5,其中:

  • JUnit 5 取代了 JUnit 4 的 @RunWith,用 @ExtendWith(SpringExtension.class) 替代
  • @SpringBootTest 仍然可用
  • @Test 改用 JUnit 5 版本org.junit.jupiter.api.Test

📌 示例代码

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

@ExtendWith(SpringExtension.class) // 取代 JUnit 4 的 @RunWith
@SpringBootTest // 加载 Spring Boot 上下文
public class VoucherOrderServiceTest {

    @Test
    void testCreateVoucherOrder() {
        System.out.println("测试 Spring Boot 2.x");
    }
}

✅ 3. Spring Boot 3.x(JUnit 5)

Spring Boot 3.x 仍然使用 JUnit 5,和 2.x 基本一致:

  • @ExtendWith(SpringExtension.class) 依然适用,但可以省略(Spring Boot 3.x 默认使用 JUnit 5

📌 示例代码

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

@SpringBootTest // 直接使用,不需要 @ExtendWith
public class VoucherOrderServiceTest {

    @Test
    void testCreateVoucherOrder() {
        System.out.println("测试 Spring Boot 3.x");
    }
}


📌 总结:Spring Boot 各版本测试注解对比

Spring Boot 版本JUnit 版本测试注解
1.xJUnit 4@RunWith(SpringRunner.class)@SpringBootTest@Test
2.xJUnit 5@ExtendWith(SpringExtension.class)(代替 @RunWith)、@SpringBootTest@Test
3.xJUnit 5@SpringBootTest(无需 @ExtendWith)、@Test

✅ 选择最佳实践

  • 如果你使用 Spring Boot 2.x 或 3.x推荐 JUnit 5(更现代)

🚀 建议:Spring Boot 3.x 直接使用 JUnit 5,不需要 @ExtendWith(SpringExtension.class)

相关文章:

  • Mysql从入门到精通day5————子查询精讲
  • 人工智能的未来:从弱 AI 到通用人工智能(AGI)
  • 常用的卷积神经网络及Pytorch示例实现
  • AI+制造的破局之战(上):从技术爆发到价值穿透,谁将率先定义“智能体时代”?
  • 网络架构搭建中的 QinQ 与端口安全策略
  • python采集淘宝拍立淘按图搜索API接口,json数据示例参考
  • Java中用Stream流取出分组后每组中最大值对应的对象
  • ubuntu开启黑屏现象解决
  • Linux上位机开发实践(从MPP平台到产品)
  • AI大模型从0到1记录学习 day10
  • SvelteKit 最新中文文档教程(16)—— Service workers
  • 【Unity】记录TMPro使用过程踩的一些坑
  • SpringBoot整合LogStash,LogStash采集服务器日志
  • vue 4 组件通信
  • C语言字符串处理相关函数详解
  • T11 TensorFlow入门实战——优化器对比实验
  • NE 综合实验3:基于 IP 配置、链路聚合、VLAN 管理、路由协议及安全认证的企业网络互联与外网访问技术实现(H3C)
  • Spring Data JPA方法命名规则的完整总结,按场景分类整理
  • 解决在pycharm下载的python在cmd命令行无法识别的问题
  • 蓝桥杯最后十天冲刺day 1
  • jsp网站首页怎么做/目前最好的营销模式
  • 织梦门户网站模板/软文推广代表平台
  • 星辰wordpress主题/网站百度关键词优化
  • 网站 建设 流行 数据库/seo诊断工具网站
  • 高端网站建设公司的问题/网站建设网络推广平台
  • 有设计师做的装修效果图的网站/河南今日头条新闻