You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:47:34