1 单元测试JUnit 5
1.1JUnit 5简介以及使用
JUnit5作为最新版本的JUnit框架与之前版本的Junit框架有很大的不同。JUnit5主要由三个不同子项目的几个不同模块组成:JUnit Platform、JUnit Jupiter、JUnit Vintage。
JUnit Platform: 它是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
JUnit Jupiter: 提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含了一个测试引擎,用于在Junit Platform上运行。
JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的测试引擎。
在这里我们需要了解的是:SpringBoot 2.4 以上版本移除了默认对JUnit Vintage的依赖。如果需要兼容junit4需要自行引入,不引入的话就不能使用junit4的功能@Test,但是JUnit5也有一个@Test注解能够完成同样的功能
使用:
由上面的JUnit5分析可知:要想使用JUnit5并兼容JUnit以前的版本的话,必须引用以下两个依赖
<!--测试的启动器依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--兼容JUnit4版本的单元测试--> <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>
然后使用@SpringBootTest注解标注测试类,使用@Test标注测试方法
1.2 常用的测试注解
1.2 常用的测试注解
官方文档中已经定义并解释了所有的注解,可以通过这个链接进行查看官方文档的链接地址接下来会选取常用的几个注解进行讲解学习
@SpringBootTest和@Test不再赘述
@DisplayName注解:控制台砖展示名
@BeforeEach注解:每个方法执行之前执行@AfterEach注解:每个方法执行之后执行
@BeforeAll注解:所有方法执行之前执行@AfterAll注解:所有方法执行之后执行
值得注意的是,这两个注解的修饰的方法都必须使用static修饰
@Disable注解:在运行测试类的时候禁用这个方法,可以单独执行
@Timeout注解:设置测试方法的执行时间,超过这个时间则抛异常
@ExtendWith注解:设置测试类的测试驱动,@SpringBootTest注解是个复合注解,其中底层就有@ExtendWith注解指定了测试类使用的是SpringBoot的测试驱动
@RepeatedTest注解:指定方法重复次数