springboot 不同版本中 junit 测试类的写法变化
参考网址:
https://blog.csdn.net/wb1046329430/article/details/116450264?ops_request_misc=&request_id=&biz_id=102&utm_term=老版springboot测试类&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-.ecpm_v1_rank_v29&spm=1018.2226.3001.4187
说明:
该作者整理的比较全了,防止遗忘,转载一波
文章目录
1. SpringBoot 2.2 之前的版本
1.1. 测试类
package com.example.demo1;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampTest {
@Test
public void test() {
}
}
1.2. 依赖项
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. SpringBoot 2.2 之后的版本
2.1. 测试类
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class SampTest {
@Test
public void test() {
}
}
2.2. 依懒项
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
junit-vintage-engine是JUnit4中使用的测试引擎。
junit-jupiter-engine是JUnit5中使用的测试引擎。
在Spring Boot 2.2之后版本的spring-boot-starter-test中提供了junit-vintage-engine和junit-jupiter,而junit-jupiter中又提供了junit-jupiter-engine。也就是同时集成了JUnit4和JUnit5中的测试引擎,这样是为了兼容老版本考虑。如果你的项目只用了JUnit5,防止出错,可以在pom中进行排除junit-vintage-engine。
如下所示为Spring Boot 2.3.5版本的spring-boot-starter-test的pom依赖:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.6.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.6.3</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>hamcrest-core</artifactId>
<groupId>org.hamcrest</groupId>
</exclusion>
</exclusions>
</dependency>
这是junit-jupiter
中的pom
依赖:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.3</version>
<scope>runtime</scope>
</dependency>
2.3. 最新依赖
目前最新版的Spring Boot 2.4.5是不需要进行排除的,因为我发现该版本的spring-boot-starter-test中已经将junit-vintage-engine依赖删除了。所以pom可以直接这么写了(和2.2之前的版本一样了,用到了可以自己去查看你所用SpringBoot版本的spring-boot-starter-test,看是否需要排除Junit4依赖):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
.springframework.boot
spring-boot-starter-test
test