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

上传至Hackerrank的JUnit测试无法被Maven Surefire检测执行

Maven Surefire Plugin Reports 0 Tests on Hackerrank (JUnit 5 Works Locally)

以下是针对问题的排查方向和解决方案:

1. 确保Maven Surefire Plugin兼容JUnit 5

JUnit 5需要使用2.22.0及以上版本的maven-surefire-plugin,且必须配置JUnit Platform提供者。如果pom.xml中插件版本过低或缺少必要依赖,Hackerrank的Maven环境会无法识别JUnit 5测试。

在pom.xml的<build>节点下添加或更新插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M7</version> <!-- 推荐使用较新版本 -->
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.2</version>
        </dependency>
    </dependencies>
</plugin>

同时确认JUnit 5 API依赖已正确引入:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.9.2</version>
    <scope>test</scope>
</dependency>

2. 检查测试类/方法的命名与规范

Maven Surefire默认只识别符合以下规则的测试类:

  • 类名以Test结尾(如CalculatorTest.java)
  • 类名以Tests结尾(如MathTests.java)
  • 类名以TestCase结尾

测试方法必须满足:

  • 访问修饰符为public
  • 返回值为void
  • 无参数
  • 使用JUnit 5的@Test注解(org.junit.jupiter.api.Test,而非JUnit 4的org.junit.Test)

示例正确测试类:

package com.yourproject;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class SampleTest { // 符合命名规则,public修饰

    @Test // 正确的JUnit 5注解
    public void testBasicFunction() { // public、void、无参数
        assertTrue(1 < 2);
    }
}

3. 确认项目目录结构符合Maven标准

Hackerrank的Maven构建严格遵循标准结构,测试类必须放在src/test/java目录下,而非src/main/java或其他自定义目录。如果测试类位置错误,Surefire插件会无法扫描到。

4. 排查依赖冲突

检查pom.xml中是否存在JUnit 4的依赖(如junit:junit),这类依赖可能导致Surefire优先使用JUnit 4规则,从而忽略JUnit 5测试。如有冲突,移除JUnit 4相关依赖。

5. 验证Zip包的结构

打包上传时,确保Zip包的根目录是Maven项目的根目录(包含pom.xml、src文件夹等),而非嵌套多层目录。Hackerrank的构建环境需要直接读取根目录下的pom.xml执行构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:05:54