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

本地mvn clean install可执行测试,GitHub Actions测试数为0排查

问题排查与解决

1. 缺少JUnit 5对应的Surefire插件配置

你使用了JUnit 5,但POM中未配置maven-surefire-plugin。默认的Surefire版本可能不兼容JUnit 5,导致无法识别并运行测试类。

解决办法:在POM的<build><plugins>节点下添加Surefire插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.2.5</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.10.2</version>
        </dependency>
    </dependencies>
</plugin>

2. GitHub Actions拉取的分支与测试代码所在分支不匹配

你的Workflow里强制拉取feat/add-test分支,但触发条件仅针对master分支的推送和PR。如果流水线是通过master分支的事件触发的,而feat/add-test分支中没有测试代码(或未提交测试代码),自然会出现测试数为0的情况。

解决办法:

  • 若要在feat/add-test分支触发流水线,修改触发分支配置:
on:
  push:
    branches: [ master, feat/add-test ]
  pull_request:
    branches: [ master ]
  • 或者移除checkout的ref参数,让流水线自动拉取触发事件对应的分支:
- uses: actions/checkout@v3

3. Maven步骤冗余引发的潜在问题

Workflow中连续执行了mvn package -DskipTests、mvn clean install、mvn clean test,多次clean会清空target目录,虽然clean test会重新编译,但重复操作可能引发缓存或编译异常。

优化建议:简化步骤,例如合并为:

- name: Build and Run Tests
  run: mvn clean install

或者拆分更清晰的步骤:

- name: Compile Project
  run: mvn clean compile
- name: Execute Tests
  run: mvn test

4. 测试类命名不符合Maven默认识别规则

Maven Surefire插件默认仅识别以下命名格式的测试类:

  • **/Test*.java
  • **/*Test.java
  • **/*TestCase.java
    如果你的测试类命名不符合上述规则(例如命名为XXXTests.java),会被插件忽略。

解决办法:

  • 修改测试类命名以符合默认规则;
  • 或者在Surefire插件中配置自定义匹配规则:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.2.5</version>
    <configuration>
        <includes>
            <include>**/*Tests.java</include>
        </includes>
    </configuration>
</plugin>

测试数为0截图

内容的提问来源于stack exchange,提问作者rosepalette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:13:22