Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库。

    JUnit 5官方文档

    • 作为最新版本的JUnit框架,JUnit5与之前版本的JUnit框架有很大的不同。由三个不同子项目的几个不同模块组成。

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage。

    • JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
    • JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部包含了一个测试引擎,用于在Junit Platform上运行。
    • JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,JUnit3.x的测试引擎。

    注意:

    • SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖。如果需要兼容JUnit4需要自行引入(不能使用JUnit4的功能 @Test)

    JUnit 5’s Vintage已经从spring-boot-starter-test从移除。如果需要继续兼容Junit4需要自行引入Vintage依赖:

    1. <dependency>
    2. <groupId>org.junit.vintage</groupId>
    3. <artifactId>junit-vintage-engine</artifactId>
    4. <scope>test</scope>
    5. <exclusions>
    6. <exclusion>
    7. <groupId>org.hamcrest</groupId>
    8. <artifactId>hamcrest-core</artifactId>
    9. </exclusion>
    10. </exclusions>
    11. </dependency>
    • 使用添加JUnit 5,添加对应的starter: ```xml org.springframework.boot spring-boot-starter-test test
    
    - Spring的JUnit 5的基本单元测试模板(Spring的JUnit4的是`@SpringBootTest`+`@RunWith(SpringRunner.class)`):
    ```java
    import org.junit.jupiter.api.Assertions;
    import org.junit.jupiter.api.Test;//注意不是org.junit.Test(这是JUnit4版本的)
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class SpringBootApplicationTests {
    
        @Autowired
        private Component component;
    
        @Test
        //@Transactional 标注后连接数据库有回滚功能
        public void contextLoads() {
            Assertions.assertEquals(5, component.getFive());
        }
    }
    

    Jupiter 英 [ˈdʒuːpɪtə®] 美 [ˈdʒuːpɪtər] n. 木星(太阳系中最大的行星)

    vintage 英 [ˈvɪntɪdʒ] 美 [ˈvɪntɪdʒ] n. 特定年份(或地方)酿制的酒;酿造年份;采摘葡萄酿酒的期间(或季节);葡萄收获期(或季节) adj. (指葡萄酒)优质的,上等的,佳酿的;古色古香的(指1917–1930年间制造,车型和品味受人青睐的);(过去某个时期)典型的,优质的;(某人的)最佳作品的