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

Quarkus执行测试时检测不到测试用例,请求排查方案

Quarkus单元测试无法被检测到的排查方案

问题详情

执行./gradlew quarkusDev后按[r]运行测试,输出显示无测试用例可执行:

Starting test run, 0 tests to run.
Running 1/0. Running: #JUnit Jupiter

测试文件路径为src/test/java/br.com.org.product.reports.service/ExampleTest.java,代码如下:

package br.com.org.product.reports.service;

import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

@QuarkusTest
class ExampleTest {
    @Test
    public void example() {
        assertEquals(1 + 1, 2);
    }
}

build.gradle相关配置:

plugins {
    id 'java'
    id 'io.quarkus'
    id 'jacoco'
}

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

dependencies {
    testImplementation 'io.quarkus:quarkus-junit5'
    testImplementation 'io.rest-assured:rest-assured'
}

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << '-parameters'
}

compileTestJava {
    options.encoding = 'UTF-8'
}

新项目测试正常,但现有项目无法检测到测试用例,需排查原因。

可能的原因及解决办法

  • 目录结构错误:当前测试文件路径src/test/java/br.com.org.product.reports.service不符合Java规范,包对应的目录必须是层级结构,正确路径应为src/test/java/br/com/org/product/reports/service/ExampleTest.java。把完整包名当成单个目录,会导致Quarkus扫描不到测试类。

  • 测试类访问权限问题:虽然JUnit 5允许非public测试类,但部分场景下Quarkus的扫描逻辑可能对权限敏感。试试给测试类加上public修饰符:

    @QuarkusTest
    public class ExampleTest {
        @Test
        public void example() {
            assertEquals(1 + 1, 2);
        }
    }
    
  • 依赖版本不一致:检查Quarkus插件和依赖的版本是否统一。可以在build.gradle里明确指定版本,避免隐式版本冲突:

    plugins {
        id 'java'
        id 'io.quarkus' version '你的Quarkus版本' // 比如2.16.8.Final
        id 'jacoco'
    }
    
    dependencies {
        testImplementation enforcedPlatform("io.quarkus:quarkus-bom:${quarkusPluginVersion}")
        testImplementation 'io.quarkus:quarkus-junit5'
        testImplementation 'io.rest-assured:rest-assured'
    }
    
  • 测试类未正确编译:执行./gradlew clean testClasses清理并重新编译测试类,查看编译日志是否有错误。如果编译失败,测试类不会生成,自然检测不到。

  • Jacoco插件干扰:暂时注释掉Jacoco插件,重新运行测试,看是否能检测到用例。部分情况下Jacoco配置会影响测试类扫描:

    // id 'jacoco'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:35:16