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

QuarkusTestExtension搭配SoftAssertionsExtension使用抛出异常如何解决

错误根因

你当前的写法有两处核心问题:

  1. 不应该直接通过@ExtendWith(QuarkusTestExtension.class)启用Quarkus测试能力。Quarkus测试必须通过@QuarkusTest元注解触发,该注解会自动注册测试类为CDI Bean、完成测试上下文初始化等全套逻辑,直接引用扩展会导致Quarkus的CDI容器找不到测试类实例,就是你看到的UnsatisfiedResolutionException异常。
  2. 不需要手动声明QuarkusTestExtension,@QuarkusTest已经内置了该扩展的加载逻辑。

解决方案

你只需要调整自定义组合注解的定义,将@QuarkusTest作为元注解加入即可,AssertJ的软断言扩展可以和Quarkus测试正常兼容:

import org.assertj.core.api.junit.jupiter.SoftAssertionsExtension;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.extension.ExtendWith;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@QuarkusTest
@ExtendWith(SoftAssertionsExtension.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface QuarkusAssertJTest {}

测试类代码不需要做任何修改,SoftAssertions参数注入、测试结束自动调用assertAll()的逻辑都可以正常运行。你使用的io.quarkus:quarkus-junit5:1.13.3.Final和org.assertj:assertj-core:3.21.0版本不存在兼容性问题,不需要调整依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:03