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

news2024/11/19 1:43:43

文章目录

  • 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 的扩展是通过 @RunWithTestRule 来实现的,有一些限制。
    • 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,以便利用新功能和改进。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1001349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次线程堵塞(挂起)导致消息队列积压

1 背景 A服务作为生产者,每天发送上千万的mq消息,每一个消息包含500个用户ids数据。B服务作为消费者,接受MQ消息并通过http调用第三方请求进行业务处理,消费组启用了rabbitmq的多线程消费组,一个实例并发40个mq消费者…

索尼mp4变成rsv修复案例(ILME-FX3)

索尼mp4的修复案例讲过很多,这次是索尼的ILME-FX3也算是一个畅销的机型,一般索尼没有封装的文件是RSV文件,但是极少遇到有多个RSV文件的,下边我们来讲下这个特殊案例。 故障文件:4个RSV文件,大小在1.78G~28G多 故障现…

(测评补单)Lazada、Shopee、Zalora:探索东南亚电商市场

随着互联网的发展,电子商务在东南亚地区迅速崛起。在这个充满活力和潜力的市场中,Lazada、Shopee和Zalora成为了三大领先的电商平台。它们以其独特的商业模式和创新的服务,吸引了数百万用户。本文将深入探讨这三家电商巨头的发展历程、核心竞…

一文讲透机器学习超参数调优!

公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 本文的主题:机器学习建模的超参数调优。开局一张图: 文章很长,建议直接收藏~ 一、什么是机器学习超参数? 机器学习超参数…

代码随想录训练营 打家劫舍

代码随想录训练营 dp 198. 打家劫舍🌸code 213. 打家劫舍 II🌸分析code 337.打家劫舍 III🌸 198. 打家劫舍🌸 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素…

FastChat工作原理解析

在了解FastChat如何完成大模型部署前,先了解下Huggingface提供的Transformer库。Hugggingface提供的Transformer库 Hugging Face 的 Transformers 库是一个用于自然语言处理(NLP)任务的 Python 库,旨在简化和加速使用预训练语言模…

Vue3 中的几个坑,你都见过吗?

Vue3 目前已经趋于稳定,不少代码库都已经开始使用它,很多项目未来也必然要迁移至 Vue3。本文记录我在使用 Vue3 时遇到的一些问题,希望能为其他开发者提供帮助。 1. 使用 reactive 封装基础数据类型 传统开发模式中,数据声明很简…

[论文阅读]Visual Attention Network原文翻译

[论文链接]https://arxiv.org/abs/2202.09741 摘要 虽然一开始是被设计用于自然语言处理任务的,但是自注意力机制在多个计算机视觉领域掀起了风暴。然而,图像的二维特性给自注意力用于计算机视觉带来了三个挑战。(1)将图像视作一…

怎样获取字符串数组的长度_使用sizeof(array) / sizeof(array[0])

使用sizeof() C、C中没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时…

Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例

Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例 点击封面跳转到Unity国际版下载页面 简介 在Unity中,性能优化是游戏开发过程中非常重要的一环。其中,Shader的优化对于游戏的性能提升起着至关重要的作用。…

redis缓存详解

一、Redisson分布式锁存在问题 1、基于redis实现的分布式锁,如果redis集群出现master宕机,而从节点没有接收到锁对应的key,被选举成新的master就可能存在被其它线程加锁成功则存在加锁问题 2、 基于上面的问题,可以把redis分为多…

SpringBoot国际化配置组件支持本地配置和数据库配置

文章目录 0. 前言i18n-spring-boot-starter1. 使用方式0.引入依赖1.配置项2.初始化国际化配置表3.如何使用 2. 核心源码实现一个拦截器I18nInterceptorI18nMessageResource 加载国际化配置 3.源码地址 0. 前言 写个了原生的SpringBoot国际化配置组件支持本地配置和数据库配置 背…

口袋参谋:99.99%商家都学的防骗技巧!

​99%的淘宝天猫商家,必然都要解决一个问题!!! 如何让自己不被敲诈勒索且骗钱! 直接看真实案例 看这个骗子,是如何赤裸裸诈骗商家的! 如果你不想再当冤大头,告诉你一个99.99%有效…

SSM - Springboot - MyBatis-Plus 全栈体系(六)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.1 实验一:Bean 注解标记和扫描 (IoC) 3.1.1 注解理解 和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框…

分类预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SVM-Adaboost支持向量机结合Ada…

Python 图形化界面基础篇:理解 Tkinter 主事件循环

Python 图形化界面基础篇:理解 Tkinter 主事件循环 引言什么是 Tkinter 主事件循环? Tkinter 主事件循环的使用步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口对象步骤3:设置窗口标题和添加 GUI 元素步骤4&#xff1…

router-link 和 router-view的区别

router-link 实现路由之间的跳转 router-view(路由出口组件 -> 渲染路径匹配到的视图组件) 当你访问的地址与路由path相符时,会将指定的组件替换该router-view router-link router-link 点击实现路由跳转,to属性指向目标地址&…

期权开户需要多长时间?一天可以开好吗?

期权开户一般需要一天到一个月的时间不等。根据不同券商的要求,开户流程和时间可能会有所不同。一些券商会要求客户进行验资,考试,仿真交易等环节,因此需要花费一定的时间来审核和激活账户,下文介绍期权开户需要多长时…

Mybatis-Plus 批量插入数据时报错 java.lang.Object Not Found TableInfoCache

文章目录 前言问题回溯排查过程总结 前言 报错堆栈信息如下,基本是mybatis-plus源码中的一些东西: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: java.lang.Object Not Found TableInfoCache.at com.baomidou.mybatisplus.core.to…

安装wps后,回收站右键菜单出现“恢复误删文件”,通过注册表的方式去掉。

免费的才是最贵的。垃圾流氓软件。 这个东西点开会给你下载一个叫金山数据恢复大师的看起来不知道多少年的老古董。 win R 输入regedit打开注册表按照路径寻找:HKEY_CLASSES_ROOT\CLSID{645FF040-5081-101B-9F08-00AA002F954E}\shellex\ContextMenuHandlers 大功…