如何在Maven生命周期中无警告运行JUnit5.6.2与Spock测试?
解决Spock 2.0与JUnit 5在Maven Test阶段共存且无警告的方案
你遇到的这个警告本质是因为引入了已废弃的junit-platform-surefire-provider依赖——从Maven SureFire 2.22.0版本开始,已经原生内置了JUnit Platform的支持,完全不需要再额外添加这个provider依赖。接下来我们调整配置就能实现两者同时运行且消除警告:
关键修改步骤
1. 移除过时的SureFire Provider依赖
直接删除maven-surefire-plugin下的<dependencies>节点,保留原有的<configuration>即可。修改后的插件配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <!-- 确保是2.22.0及以上 --> <configuration> <includes> <include>**/*Test.java</include> <include>**/*Spec.java</include> </includes> </configuration> </plugin>
2. 确认核心依赖的兼容性
你的现有依赖配置已经满足要求,这里再强调几个关键点:
- Spock 2.0-M2-groovy-3.0本身就是基于JUnit Platform构建的,天然支持和JUnit 5共存
- 你已经显式引入了JUnit Jupiter的
api和engine依赖,以及Spock的spock-core和spock-spring依赖 gmavenplus-plugin的配置正确,能编译src/test/groovy下的Spock测试类
验证效果
执行mvn clean install或者mvn clean test:
- JUnit 5的
*Test.java测试类会被JUnit Jupiter引擎执行 - Spock的
*Spec.java测试类会被Spock基于JUnit Platform的引擎执行 - 之前的废弃警告会完全消失
额外说明
如果后续遇到测试类不被执行的情况,可以检查:
- 确保测试类的命名符合你在SureFire里配置的规则(
*Test.java/*Spec.java) - 确认
gmavenplus-plugin的<testSources>配置正确指向了你的Groovy测试目录
内容的提问来源于stack exchange,提问作者Michał Orliński
相关产品推荐
相关产品推荐

