首页 > 其他分享 >SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题

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

时间:2023-08-03 09:44:05浏览次数:41  
标签:SpringBoot plugin surefire 单元测试 maven 2.22 JUnit

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

 

问题现象

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

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

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

在经过一系列的测试后,发现只有 2.21 及以下版本的 maven-surefire-plugin 可以正常运行单元测试。

解决方法

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

但作为一个程序开发人员,怎么能止步于此呢?

去看看 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 的包,我们可以通过手动置顶内置的依赖,比如:

1、如果是 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-junit4</artifactId>
			<version>2.22.2</version>
		</dependency>
	</dependencies>
</plugin>

***同时必须引用 junit4.12以上版本***
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

 

 

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

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

3、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>

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

参考资料:

学习Maven之Maven Surefire Plugin(JUnit篇)

标签:SpringBoot,plugin,surefire,单元测试,maven,2.22,JUnit
From: https://www.cnblogs.com/kelelipeng/p/17602439.html

相关文章

  • 运维——springboot项目部署
    转自:https://juejin.cn/post/6844903877150507016#heading-20摘要本文主要以图文的形式讲解mall在Linux环境下的部署,涉及在Docker容器中安装Mysql、Redis、Nginx、RabbitMQ、Elasticsearch、Mongodb,以及SpringBoot应用部署,基于CenterOS7.6。Docker环境安装安装yum-utils:......
  • springboot 初始化加载过程 条件注解
    官网解释:https://docs.spring.io/spring-boot/docs/3.0.9/reference/html/features.html#features.developing-auto-configuration.condition-annotations从其他博客粘过来的表格:条件注解Condition处理类实例解释@ConditionalOnBeanOnBeanCondition@ConditionalOnBean(D......
  • Springboot+elasticsearch基础整合实例
    es,当插入数据的时候,可以自动创建索引,但是mapping却都是默认类型,导致搜索时需要key.keyword方式,不科学。索引也可以手偶刚创建,指定mapping。当然还有一种优雅的方案使用template,当自动创建索引的时候,我们的字段类型就可控了。真实业务中,不能用一个固定的index,索引是需要切分的......
  • JAVA-Springboot实践项目-用户注册
    Smiling&Weeping----我本没喜欢的人,见你的次数多了,也就有了。1.创建数据表1.1.选中数据表:usestore1.2.创建t_user表:2创建用户实......
  • maven-resources-plugin详解
    核心资料来源:maven-resources-plugin详解(csdn.net)maven-resources-plugin到低在什么场景下使用?他到底有什么作用?他和pom当中配置的resources标签又有什么关联?为什么有的项目使用了该插件而有的却没有?resources当中的filtering标签到低是干什么的?maven怎么打包过滤文件?......
  • SpringBoot-2、SpringBoot打包时排除指定文件
    maven-jar-plugin,它可以配置JAR打包的细节,包括哪些文件会被包含在JAR中。以下是一个示例的配置,可以在pom.xml中添加:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin<......
  • springboot和springcloud区别
    springboot和springcloud区别有:1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。1、含义不同springboot:一个快速开发框架......
  • SpringBoot 打jar包后下载static文件夹下的文件
    前端:后端:@RequestMapping(value={"downloadFile"})publicvoiddownloadFile(HttpServletResponseresponse){InputStreaminputStream=null;OutputStreamoutputStream=null;fileName="aaa.pdf";try{//直接获取流inputStream=FileUtil.cl......
  • SpringBoot + Redis 执行lua脚本
    1、背景有时候,我们需要一次性操作多个Redis命令,但是这样的多个操作不具备原子性,而且Redis的事务也不够强大,不支持事务的回滚,还无法实现命令之间的逻辑关系计算。所以,一般在开发中,我们会利用lua脚本来实现Redis的事务。2、lua脚本Redis中使用lua脚本,我们需要注意......
  • 使用Maven插件为SpringBoot应用构建Docker镜像
    Docker开启远程API用vim编辑器修改docker.service文件#生成证书opensslgenrsa-aes256-outca-key.pem4096opensslreq-new-x509-days365-keyca-key.pem-sha256-outca.pemopensslgenrsa-outserver-key.pem4096opensslreq-subj"/CN=localhost"-sha256-......