文章目录
- 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 中用于编写单元测试的两个主要框架。它们有一些重要的区别,包括以下几个方面:
-
架构和模块化:
- JUnit 4 是一个单一的 JAR 文件,没有明确定义的模块系统。测试类通常继承自
TestCase
类,使用@Test
注解来标识测试方法。 - JUnit 5 更加模块化,它将不同的功能分解成多个模块,例如
junit-jupiter-api
用于编写测试,junit-jupiter-engine
用于运行测试,junit-platform-commons
用于共享工具等。这使得用户可以选择性地添加所需的功能。
- JUnit 4 是一个单一的 JAR 文件,没有明确定义的模块系统。测试类通常继承自
-
扩展性:
- JUnit 4 的扩展是通过
@RunWith
和TestRule
来实现的,有一些限制。 - JUnit 5 提供了更强大的扩展模型,称为 Jupiter 扩展模型,允许用户创建自定义扩展来修改测试执行过程,这些扩展可以通过
@ExtendWith
注解应用到测试类。
- JUnit 4 的扩展是通过
-
注解:
- JUnit 4 使用
@Test
注解来标识测试方法,还有其他一些用于设置测试环境的注解,如@Before
和@After
。 - JUnit 5 使用了一组新的注解,例如
@Test
,@BeforeEach
,@AfterEach
,@BeforeAll
, 和@AfterAll
。这些注解提供了更多的灵活性和可读性。
- JUnit 4 使用
-
断言:
- JUnit 4 使用
Assert
类中的静态方法来执行断言。 - JUnit 5 提供了一组新的断言方法,它们更加丰富和表达力强,包括
assertNotNull
,assertThrows
, 和assertTimeout
等。
- JUnit 4 使用
-
参数化测试:
- JUnit 4 支持参数化测试,但需要使用
@Parameters
注解和一个特殊的方法来定义参数。 - JUnit 5 引入了更强大的参数化测试功能,通过
@ParameterizedTest
注解和@MethodSource
或@CsvSource
等注解来支持参数化测试,使其更易于使用和理解。
- JUnit 4 支持参数化测试,但需要使用
-
条件测试:
- JUnit 4 缺乏内置的条件测试支持。
- JUnit 5 引入了
@EnabledOnOs
,@EnabledIf
,@EnabledIfSystemProperty
,等注解,可以根据条件来启用或禁用测试。
-
动态测试:
- JUnit 5 支持动态测试,可以在运行时生成测试用例,而不需要在编译时知道所有测试情况。
总的来说,JUnit 5 引入了许多改进和新功能,使得编写和管理测试更加灵活和强大。然而,迁移到 JUnit 5 需要一些工作,特别是如果你的项目已经使用了 JUnit 4。最佳选择取决于你的具体需求和项目的情况。如果你正在开始一个新项目,那么考虑使用 JUnit 5,因为它提供了更多的功能和灵活性。如果你的项目已经使用 JUnit 4,那么可以逐步迁移到 JUnit 5,以便利用新功能和改进。