
SpringBoot - @SpringBootTest加速单元测试的小窍门
我这里用的是 2022

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

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Older-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注解

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


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


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




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





这里我们以大版本3.x 为例 看一下

JUnit 4 和 JUnit 5 是 Java 中用于编写单元测试的两个主要框架。它们有一些重要的区别,包括以下几个方面:
架构和模块化:
TestCase 类,使用 @Test 注解来标识测试方法。junit-jupiter-api 用于编写测试,junit-jupiter-engine 用于运行测试,junit-platform-commons 用于共享工具等。这使得用户可以选择性地添加所需的功能。扩展性:
@RunWith 和 TestRule 来实现的,有一些限制。@ExtendWith 注解应用到测试类。注解:
@Test 注解来标识测试方法,还有其他一些用于设置测试环境的注解,如 @Before 和 @After。@Test, @BeforeEach, @AfterEach, @BeforeAll, 和 @AfterAll。这些注解提供了更多的灵活性和可读性。断言:
Assert 类中的静态方法来执行断言。assertNotNull, assertThrows, 和 assertTimeout 等。参数化测试:
@Parameters 注解和一个特殊的方法来定义参数。@ParameterizedTest 注解和 @MethodSource 或 @CsvSource 等注解来支持参数化测试,使其更易于使用和理解。条件测试:
@EnabledOnOs,@EnabledIf,@EnabledIfSystemProperty,等注解,可以根据条件来启用或禁用测试。动态测试:

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