码农知识堂 - 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,以便利用新功能和改进。

    在这里插入图片描述

  • 相关阅读:
    js 将多张图片合并成一张图片
    wifi7有关的210个提案
    PHP 使用 PHPRedis 与 Predis
    JavaScript Promise
    猿创征文 |【STM32】I2C协议完成温湿度检测
    AI遮天传 ML-广义线性模型(一)
    附录5-vscode常用配置
    RabbitMQ怎么保证可靠性
    at定时任务
    亚马逊自养号测评:如何安全搭建环境,有效规避风险
  • 原文地址:https://blog.csdn.net/yangshangwei/article/details/132806257
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号