SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题

2022年05月13日 阅读数:4
这篇文章主要向大家介绍SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

问题现象

Spring Boot 项目,在编写单元测试时,使用了 JUnit 4.13.2 以上的版本。html

为了让 Maven 能自动运行单元测试,须要引入 Maven Surefire 或 Maven Failsafe 插件。apache

项目中使用的 maven-surefire-plugin 版本号为 2.22.2,在经过 mvn clean package 打包编译时,没有执行单元测试。maven

在通过一系列的测试后,发现只有 2.21 及如下版本的 maven-surefire-plugin 能够正常运行单元测试。ide

解决方法

根据上面的分析,最直观的解决方法就是下降 maven-surefire-plugin 的版本号。oop

但做为一个程序开发人员,怎么能止步于此呢?单元测试

去看看 maven-surefire-plugin 插件的做用原理,它默认是按照以下逻辑去寻找 JUnit 并执行测试用例的:学习

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value
	use junit47 provider
if JUnit >= 4.0 is present
	use junit4 provider
else
	use junit3.8.1

若是不使用默认方式去查找 JUnit 的包,咱们能够经过手动置顶内置的依赖,好比:测试

一、若是是 JUnit4.7 及以上版本,能够明确声明:插件

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>2.22.2</version>
	<dependencies>
		<dependency>
			<groupId>org.apache.maven.surefire</groupId>
			<artifactId>surefire-junit47</artifactId>
			<version>2.22.2</version>
		</dependency>
	</dependencies>
</plugin>

二、JUnit 4.0 (含) 到 JUnit4 .7 (不含) 的版本,这样声明:code

org.apache.maven.plugins maven-surefire-plugin 2.22.2 org.apache.maven.surefire surefire-junit4 2.22.2 ```

三、JUnit 3.8 (含) 到 JUnit 4.0 (不含) 的版本,这样声明:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>2.22.2</version>
	<dependencies>
		<dependency>
			<groupId>org.apache.maven.surefire</groupId>
			<artifactId>surefire-junit3</artifactId>
			<version>2.22.2</version>
		</dependency>
	</dependencies>
</plugin>

四、JUnit 3.8 如下的版本,啊哦,surefire 已经不支持这么低版本的 JUnit 了,赶忙升级下 JUnit 的版本吧。

参考资料:

学习Maven之Maven Surefire Plugin(JUnit篇)


版权声明

做者:瘦风(https://healchow.com)

出处:博客园-瘦风的南墙(https://www.cnblogs.com/shoufeng)

感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其余福利和心得输出,欢迎扫码关注🤝

本文版权归博主全部,欢迎转载,但 [必须在页面明显位置标明原文连接],不然博主保留追究相关人士法律责任的权利。