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

Maven Surefire插件未执行测试阶段的配置排查请求

解决Maven Surefire插件不执行Groovy测试的问题

我之前在Groovy多模块Maven项目里也踩过完全一样的坑——Surefire死活不跑测试,编译完直接显示构建成功,连测试阶段的日志都看不到。结合你的项目结构和配置,给你梳理几个最可能的原因和解决办法:

1. 最关键的遗漏:没配置Groovy编译插件

Surefire本身不认识Groovy源码,它只能执行编译好的.class文件。你现在的配置里只加了Surefire,但没告诉Maven怎么编译src/test/java下的Groovy文件,所以这些测试类根本没被编译,Surefire自然找不到它们!

赶紧在test-groups模块的pom里加上groovy-maven-plugin,放在Surefire插件前面:

<build>
  <plugins>
    <!-- 先让Maven编译Groovy测试代码 -->
    <plugin>
      <groupId>org.codehaus.gmaven</groupId>
      <artifactId>groovy-maven-plugin</artifactId>
      <version>2.1.1</version>
      <executions>
        <execution>
          <goals>
            <goal>testCompile</goal>
          </goals>
          <configuration>
            <sourceDirectory>src/test/java</sourceDirectory>
            <includes>
              <include>**/*.groovy</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>

    <!-- 保留你原来的Surefire配置 -->
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.18.1</version>
      <configuration>
        <useFile>false</useFile>
        <includes>
          <include>**/*Spec.groovy</include>
          <include>**/*Test.groovy</include>
        </includes>
      </configuration>
    </plugin>
  </plugins>
</build>

这个插件会帮你把Groovy测试类编译成字节码,Surefire才能识别并执行它们。

2. 考虑升级Surefire版本

你用的2.18.1版本有点年头了,可能和新版Groovy存在兼容性问题。我之前升级到3.x版本后,一些奇怪的问题直接消失了,建议试试:

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>3.0.0-M7</version>
  <!-- 你的配置可以原封不动保留 -->
</plugin>

3. 检查测试类的细节

确认一下你的测试类是否符合要求:

  • 类名确实匹配你配置的*Test.groovy规则(你的TestClass.groovy是符合的,没问题)
  • 目录结构和包名一致:src/test/java/path/to/TestClass.groovy对应的包名应该是path.to
  • 测试类里有真正的测试方法:比如用JUnit的@Test注解,或者如果是Spock框架的话,要有def开头的测试方法(没有测试方法的话,Surefire也会跳过)

4. 多模块项目的执行注意事项

如果是在根目录执行mvn test,要确保根pom的<modules>里包含了test-groups模块,否则Maven不会处理它:

<modules>
  <module>commons</module>
  <module>framework</module>
  <module>generatedsources1</module>
  <module>generatedsources2</module>
  <module>test-groups</module>
</modules>

如果只想单独跑test-groups的测试,直接进入该目录执行mvn test,或者在根目录执行mvn -pl test-groups test(-pl指定要处理的模块)。

5. 用调试日志排查问题

如果上面的方法都没用,加个调试参数看看Surefire到底在干啥:

mvn test -X

在输出的日志里搜索surefire,看看它扫描了哪些目录,有没有找到你的Groovy测试类编译后的.class文件。如果没找到,那肯定是编译环节出问题了,回到第一步检查Groovy插件的配置。

按照这些步骤调整后,应该就能让Surefire正常执行你的Groovy测试了!

内容的提问来源于stack exchange,提问作者EJ-K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:44:16