码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理


    文章目录

    • Pre
    • Junit4 / Junit5 / Spring Boot / IDEA
      • IDEA版本
      • Spring-Boot-Older-Release-Notes
      • @SpringBootTest 起源 & Spring-Boot-1.4-Release-Notes
      • 2.0.0.RELEASE ----- 2.0.9.RELEASE
      • 2.1.0.RELEASE ----- 2.1.18.RELEASE
      • 2.2.0.RELEASE ~ 2.2.13.RELEASE
      • 2.3.0.RELEASE ~ 2.3.12.RELEASE
      • 2.4 ~2.7 随后版本类似 ,只是更新 junit5版本
      • 3.x 随后版本类似 ,只是更新 junit5版本
    • junit4 vs junit5

    在这里插入图片描述


    Pre

    SpringBoot - 单元测试利器Mockito入门

    SpringBoot - 应用程序测试方案

    SpringBoot - @SpringBootTest加速单元测试的小窍门


    Junit4 / Junit5 / Spring Boot / IDEA

    IDEA版本

    我这里用的是 2022

    在这里插入图片描述

    版本不同,主要跟生成的模板代码有关系
    在这里插入图片描述


    Spring-Boot-Older-Release-Notes

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Older-Release-Notes


    @SpringBootTest 起源 & Spring-Boot-1.4-Release-Notes

    在这里插入图片描述

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes

    在这里插入图片描述

    在这里插入图片描述

    • 我们可以看到 新增的 @SpringBootTest注解 依然是采用 junit4 。

    • 当然了1.0.0.RELEASE ~ 1.0.3.RELEASE的版本也是使用的 junit4 (版本不同) ,只是没有提供 @SpringBootTest注解

    在这里插入图片描述


    2.0.0.RELEASE ----- 2.0.9.RELEASE

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes

    在这里插入图片描述

    在这里插入图片描述


    2.1.0.RELEASE ----- 2.1.18.RELEASE

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes
    在这里插入图片描述
    在这里插入图片描述


    2.2.0.RELEASE ~ 2.2.13.RELEASE

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes

    在这里插入图片描述

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


    2.3.0.RELEASE ~ 2.3.12.RELEASE

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes

    在这里插入图片描述

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


    2.4 ~2.7 随后版本类似 ,只是更新 junit5版本

    在这里插入图片描述


    3.x 随后版本类似 ,只是更新 junit5版本

    在这里插入图片描述

    这里我们以大版本3.x 为例 看一下

    在这里插入图片描述


    junit4 vs junit5

    JUnit 4 和 JUnit 5 是 Java 中用于编写单元测试的两个主要框架。它们有一些重要的区别,包括以下几个方面:

    1. 架构和模块化:

      • JUnit 4 是一个单一的 JAR 文件,没有明确定义的模块系统。测试类通常继承自 TestCase 类,使用 @Test 注解来标识测试方法。
      • JUnit 5 更加模块化,它将不同的功能分解成多个模块,例如 junit-jupiter-api 用于编写测试,junit-jupiter-engine 用于运行测试,junit-platform-commons 用于共享工具等。这使得用户可以选择性地添加所需的功能。
    2. 扩展性:

      • JUnit 4 的扩展是通过 @RunWith 和 TestRule 来实现的,有一些限制。
      • JUnit 5 提供了更强大的扩展模型,称为 Jupiter 扩展模型,允许用户创建自定义扩展来修改测试执行过程,这些扩展可以通过 @ExtendWith 注解应用到测试类。
    3. 注解:

      • JUnit 4 使用 @Test 注解来标识测试方法,还有其他一些用于设置测试环境的注解,如 @Before 和 @After。
      • JUnit 5 使用了一组新的注解,例如 @Test, @BeforeEach, @AfterEach, @BeforeAll, 和 @AfterAll。这些注解提供了更多的灵活性和可读性。
    4. 断言:

      • JUnit 4 使用 Assert 类中的静态方法来执行断言。
      • JUnit 5 提供了一组新的断言方法,它们更加丰富和表达力强,包括 assertNotNull, assertThrows, 和 assertTimeout 等。
    5. 参数化测试:

      • JUnit 4 支持参数化测试,但需要使用 @Parameters 注解和一个特殊的方法来定义参数。
      • JUnit 5 引入了更强大的参数化测试功能,通过 @ParameterizedTest 注解和 @MethodSource 或 @CsvSource 等注解来支持参数化测试,使其更易于使用和理解。
    6. 条件测试:

      • JUnit 4 缺乏内置的条件测试支持。
      • JUnit 5 引入了 @EnabledOnOs,@EnabledIf,@EnabledIfSystemProperty,等注解,可以根据条件来启用或禁用测试。
    7. 动态测试:

      • JUnit 5 支持动态测试,可以在运行时生成测试用例,而不需要在编译时知道所有测试情况。

    在这里插入图片描述

    总的来说,JUnit 5 引入了许多改进和新功能,使得编写和管理测试更加灵活和强大。然而,迁移到 JUnit 5 需要一些工作,特别是如果你的项目已经使用了 JUnit 4。最佳选择取决于你的具体需求和项目的情况。如果你正在开始一个新项目,那么考虑使用 JUnit 5,因为它提供了更多的功能和灵活性。如果你的项目已经使用 JUnit 4,那么可以逐步迁移到 JUnit 5,以便利用新功能和改进。

    在这里插入图片描述

  • 相关阅读:
    2024年水利水电技术与能源环境国际会议(ICWRHTEE2024)
    stata做莫兰指数,结果不显示是怎么回事,求解答
    Java线程之间通信方式
    CompletableFuture方法介绍及代码示例
    基于STM32结合CubeMX学习Free-RT-OS的源码之事件集(event-group)
    macad.core解析exchange
    【正点原子STM32连载】 第四十二章 IIC实验 摘自【正点原子】APM32F407最小系统板使用指南
    数字IC基础协议篇(1)——I2C协议
    粒子群算法和鲸鱼算法的比较(Matlab代码实现)
    存档&改造【03】Apex-Fancy-Tree-Select花式树的导入及学习
  • 原文地址:https://blog.csdn.net/yangshangwei/article/details/132806257
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号