Springboot2.x单元测试JUnit5
⼀、JUnit5 简介
Spring Boot 2.2.0 版本开始引⼊ JUnit5 作为单元测试默认库, JUnit5作为最新版本的 JUnit框架, 它与之前版本的 JUnit框架有很⼤的不同,由三个不同⼦项⽬的⼏个不同模块组成.
JUnit5 = JUnitPlatform + JUnitJupiter + JUnitVintage
JUnitPlatform: JUnitPlatform 是在 JVM 上启动测试框架的基础,不仅⽀持 JUnit⾃制的测试引擎,其它测试引擎也都可以接⼊.
JUnitJupiter: JUnitJupiter 提供了JUnit5 的新的编程模型,是 JUnit5 新特性的核⼼.内部包含了⼀个测试引擎,⽤于在 JUnitPlatform 上运⾏.
JUnitVintage: 由于 JUnit已经发展多年,为了照顾⽼的项⽬,JUnitVintage 提供了兼容 JUnit 4.x,JUnit 3.x 的测试引擎.
注意:
SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖.如果需要兼容 JUnit4.x 版本,需要⾃⾏引⼊(不能使⽤junit4的功能 @Test)
打开项⽬发布信息 ----> 选择 v 2.4 这个版本
该版本的变更中说明了已经移除了 JUnit5 了
⼆、整合 JUnit5
未整合 JUnit 之前
@SpringBootTest + @RunWith(SpringTest.class)
Springboot 整合 Junit 以后
编写测试⽅法:@Test标注(注意需要使⽤ junit5 版本的注解)
Junit类具有 Spring 的功能, 例如 @Autowired、@Transactional (标注测试⽅法,测试完成后⾃动回)
我们只需要引⼊ spring-boot-starter-test 依赖即可完成整合,其它的 Springboot 底层都已经帮我们⾃动配置好了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
spring framework
</dependency>
三、Junit 5 常⽤注解
具体的使⽤规范可以参考官⽹ JUnit 5 官⽹ /junit5/
JUnit5 的注解与JUnit4 的注解有所变化,具体可以参考官⽅⽂档
注解说明
@Test表⽰⽅法是测试⽅法,但是与 JUnit4 的 @Test 不同,它的职责⾮常单⼀不能声明任何属性,拓展的测试将会由 Jupiter 提供额外测试@DisplayName为测试类或者测试⽅法设置展⽰名称
@BeforeAll表⽰在所有单元测试之前执⾏
@BeforeEach表⽰在每个单元测试之前执⾏
@Timeout表⽰测试⽅法运⾏如果超过了指定时间将会返回错误
@Disabled表⽰测试类或测试⽅法不执⾏
@RepeatedTest表⽰⽅法可重复执⾏
@ExtendWith为测试类或测试⽅法提供扩展类引⽤
@AfterEach表⽰在每个单元测试之后执⾏
@AfterAll表⽰在所有单元测试之后执⾏
我们就选取⼏个测试注解来使⽤⼀下
1、测试类
@DisplayName("测试类")
@SpringBootTest
class DatasourceApplicationTests {
@Test
@BeforeAll
public static void beforeAll() {
System.out.println("@BeforeAll: 表⽰在所有单元测试之前执⾏");
}
@BeforeEach
public void beforeEach() {
System.out.println("@BeforeEach: 表⽰在每个单元测试之前执⾏");
}
@Test
@DisplayName("测试⽅法⼀")
public void test01() {
System.out.println("@DisplayName: 为测试类或者测试⽅法设置展⽰名称");
}
@Test
@DisplayName("测试⽅法⼆")
@Timeout(value=1,unit=TimeUnit.MICROSECONDS)
public void test02() {
System.out.println("@Timeout: 表⽰测试⽅法运⾏如果超过了指定时间将会返回错误");
}
}
2、测试结果
当然 JUnit 5还有很多其它的使⽤,例如:断⾔、前置条件、嵌套测试、参数化测试以及如何从 Junit 4 迁移到  JUnit 5 等等在实际开发过程中,建议去参照官⽅⽂档的⽤户指南并且结合⾃⾝项⽬的实际情况选择合适的 JUnit 5 功能

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。