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

Quarkus多模块项目中自定义测试注解无法正常工作

问题分析

你遇到的问题核心是Quarkus测试上下文在多模块场景下,未正确扫描到核心模块中的自定义注解及关联Bean。当把注解移到my-api模块时,测试上下文能直接识别当前模块的内容,因此可以正常工作。

解决方案

1. 确保核心模块依赖被my-api测试类路径加载

在my-api模块的pom.xml里,将核心模块的依赖设置为testCompile(或Gradle的testImplementation),保证测试阶段能读取到核心模块的注解类:

<dependency>
    <groupId>你的核心模块groupId</groupId>
    <artifactId>核心模块artifactId</artifactId>
    <version>对应版本号</version>
    <scope>testCompile</scope>
</dependency>

2. 配置Quarkus测试扫描核心模块的包

在my-api模块的src/test/resources/application.properties中添加包扫描配置,指定核心模块和当前模块的基础包路径,让测试上下文能扫描到核心模块的Bean:

quarkus.test.scanned-packages=com.your.core.package,com.your.myapi.package

把上述路径替换成你实际的核心模块和my-api模块的基础包名。

3. 确保CDI Stereotype跨模块生效

因为你的注解用了@Stereotype,需要核心模块的CDI配置正确。在核心模块的src/main/resources/META-INF/beans.xml中设置bean发现模式为all,确保CDI能扫描到核心模块的所有类:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
       version="2.0" bean-discovery-mode="all">
</beans>

4. 升级Quarkus补丁版本

Quarkus 2.14.2.Final在多模块测试场景下存在部分注解跨模块的已知问题,建议升级到同系列的最新补丁版(比如2.14.7.Final),这类小版本升级不会破坏现有功能,还能修复不少测试相关的bug。

验证

修改完配置后重新运行my-api的测试类,如果不再抛出javax.enterprise.inject.UnsatisfiedResolutionException,说明问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:01:44