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

JUnit5测试套件手动运行正常 但通过Maven Pom执行mvn命令无测试运行

问题解决步骤

1. 修正执行命令

mvn clean命令本身仅负责清理项目的target构建目录,不会触发测试执行逻辑,需要执行完整的测试生命周期命令:

mvn clean test

2. 修正maven-surefire-plugin的包含规则

你提供的完整POM文件中,surefire插件当前配置的包含规则是StanderdPathInstall.java,和你实际的测试套件类名Testsuite不匹配,修改插件配置为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.version}</version>
    <configuration>
        <includes>
            <include>**/Testsuite*.java</include>
        </includes>
        <!-- 可选:指定要执行的标签,和你套件的IncludeTags匹配 -->
        <groups>unitTest</groups>
    </configuration>
</plugin>

3. 移除测试方法的static修饰符

JUnit5原生测试方法不支持static修饰,修改测试类代码:

public class TestA {
    @Test
    @Tag("unitTest")
    void myMethod1() { // 移除static修饰符
        System.out.println("Hello World!");
    }
}

public class TestB {
    @Test
    @Tag("unitTest")
    void myMethod2() { // 移除static修饰符
        System.out.println("Hello World!");
    }
}

4. 解决JUnit依赖版本冲突

你的POM中重复引入了两个不同版本的junit-jupiter-engine依赖,删除其中版本为5.8.0-M1的冗余依赖,保留和API版本一致的依赖即可,避免版本不兼容问题。

5. 可选:优化测试套件写法

JUnit5已经提供原生套件支持,不需要依赖JUnit4的@RunWith兼容注解,可以修改测试套件为原生写法(需要额外引入junit-platform-suite-api和junit-platform-suite-engine依赖):

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.IncludeTags;

@Suite
@SelectClasses( {TestA.class,TestB.class} )
@IncludeTags("unitTest")
public class Testsuite {   
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:45:04