Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理

简介: Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理

Junit4 / Junit5 / Spring Boot / IDEA


IDEA版本

我这里用的是 2022



版本不同,主要跟生成的模板代码有关系

149fc9bf0f1f4cbcad74105b6065442d.png


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



107b45afc0274c8aa6904da8abce33b1.png

f0be3abb42534eb6a0861328c2472334.png


  • 我们可以看到 新增的 @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


ed11fb6527df4d509a5e8eab0130885c.png


2.1.0.RELEASE ----- 2.1.18.RELEASE

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

82a957dbcba8461a8953999aff57199d.png


f03668ac7872464199ef7498baefba6d.png



2.2.0.RELEASE ~ 2.2.13.RELEASE

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

19a0b67f98e540c690ad8a171151b2f3.png

74d72639c20f47e8b91b34212846d30a.png

c9ad4b4a73b3439f9fa1c6472f819554.png


5a8de6f8c5284e44887bde03110eec7e.png



2.3.0.RELEASE ~ 2.3.12.RELEASE

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

d958e98fd0974f818c6e36b575926986.png


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 支持动态测试,可以在运行时生成测试用例,而不需要在编译时知道所有测试情况。


4cdae16ec01c4cae9aa6788f5acce29f.png


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


相关文章
|
21天前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
391 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
存储 JSON Java
221 0
|
28天前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
6月前
|
前端开发 Java Maven
Spring 和 Spring Boot 之间的比较
本文对比了标准Spring框架与Spring Boot的区别,重点分析两者在模块使用(如MVC、Security)上的差异。Spring提供全面的Java开发基础设施支持,包含依赖注入和多种开箱即用的模块;而Spring Boot作为Spring的扩展,通过自动配置、嵌入式服务器等功能简化开发流程。文章还探讨了两者的Maven依赖、Mvc配置、模板引擎配置、启动方式及打包部署等方面的异同,展示了Spring Boot如何通过减少样板代码和配置提升开发效率。总结指出,Spring Boot是Spring的增强版,使应用开发、测试与部署更加便捷高效。
771 11
|
7月前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
331 0
|
7月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
258 0
|
7月前
|
消息中间件 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
295 0
|
7月前
|
消息中间件 网络协议 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ集成
本文介绍了在 Spring Boot 中集成 ActiveMQ 的详细步骤。首先通过引入 `spring-boot-starter-activemq` 依赖并配置 `application.yml` 文件实现基本设置。接着,创建 Queue 和 Topic 消息类型,分别使用 `ActiveMQQueue` 和 `ActiveMQTopic` 类完成配置。随后,利用 `JmsMessagingTemplate` 实现消息发送功能,并通过 Controller 和监听器实现点对点消息的生产和消费。最后,通过浏览器访问测试接口验证消息传递的成功性。
400 0
|
7月前
|
消息中间件 存储 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
本教程介绍ActiveMQ的安装与基本使用。首先从官网下载apache-activemq-5.15.3版本,解压后即可完成安装,非常便捷。启动时进入解压目录下的bin文件夹,根据系统选择win32或win64,运行activemq.bat启动服务。通过浏览器访问`http://127.0.0.1:8161/admin/`可进入管理界面,默认用户名密码为admin/admin。ActiveMQ支持两种消息模式:点对点(Queue)和发布/订阅(Topic)。前者确保每条消息仅被一个消费者消费,后者允许多个消费者同时接收相同消息。
200 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装