前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理

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

作者头像
小小工匠
发布2023-09-12 08:58:33
2970
发布2023-09-12 08:58:33
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构


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. 架构和模块化
代码语言:txt
复制
- JUnit 4 是一个单一的 JAR 文件,没有明确定义的模块系统。测试类通常继承自 `TestCase` 类,使用 `@Test` 注解来标识测试方法。
- JUnit 5 更加模块化,它将不同的功能分解成多个模块,例如 `junit-jupiter-api` 用于编写测试,`junit-jupiter-engine` 用于运行测试,`junit-platform-commons` 用于共享工具等。这使得用户可以选择性地添加所需的功能。
代码语言:txt
复制
- JUnit 4 的扩展是通过 `@RunWith` 和 `TestRule` 来实现的,有一些限制。
- JUnit 5 提供了更强大的扩展模型,称为 Jupiter 扩展模型,允许用户创建自定义扩展来修改测试执行过程,这些扩展可以通过 `@ExtendWith` 注解应用到测试类。
代码语言:txt
复制
- JUnit 4 使用 `@Test` 注解来标识测试方法,还有其他一些用于设置测试环境的注解,如 `@Before` 和 `@After`。
- JUnit 5 使用了一组新的注解,例如 `@Test`, `@BeforeEach`, `@AfterEach`, `@BeforeAll`, 和 `@AfterAll`。这些注解提供了更多的灵活性和可读性。
代码语言:txt
复制
- JUnit 4 使用 `Assert` 类中的静态方法来执行断言。
- JUnit 5 提供了一组新的断言方法,它们更加丰富和表达力强,包括 `assertNotNull`, `assertThrows`, 和 `assertTimeout` 等。
代码语言:txt
复制
- JUnit 4 支持参数化测试,但需要使用 `@Parameters` 注解和一个特殊的方法来定义参数。
- JUnit 5 引入了更强大的参数化测试功能,通过 `@ParameterizedTest` 注解和 `@MethodSource` 或 `@CsvSource` 等注解来支持参数化测试,使其更易于使用和理解。
代码语言:txt
复制
- JUnit 4 缺乏内置的条件测试支持。
- JUnit 5 引入了 `@EnabledOnOs`,`@EnabledIf`,`@EnabledIfSystemProperty`,等注解,可以根据条件来启用或禁用测试。
代码语言:txt
复制
- JUnit 5 支持动态测试,可以在运行时生成测试用例,而不需要在编译时知道所有测试情况。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 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
                    相关产品与服务
                    腾讯云服务器利旧
                    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档