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

如何让Quarkus在单元测试中忽略@WithTransaction注解?

如何让Quarkus在单元测试中忽略@WithTransaction注解?

我在基于Quarkus和响应式Panache(HibernateReactive)的项目中,服务层的业务方法标注了@WithTransaction或@WithSession注解,这些方法通常会组合调用底层持久化层(仓库)的多个接口。

我想编写单元测试来测试这些业务逻辑,同时Mock掉所有真实的数据库访问。但即使被测试的服务方法并没有实际查询或修改数据库数据,我也无法调用标注了@WithTransaction的方法。

常见的报错情况如下:

  • 提示“没有Vert.x上下文”或“无法阻塞Vert.x事件循环线程”
    我尝试过给测试方法添加@ActivateRequestContext和@RunOnVertxContext注解,但都没有效果。

目前唯一可行的方式是用@TestReactiveTransaction重写测试,但这有一个明显的缺点——它需要活跃的数据库连接,因为方法执行结束时要执行ROLLBACK操作。

所以我的问题是:

有没有办法让Quarkus在单元测试中忽略@WithTransaction注解?

备注:内容来源于stack exchange,提问作者Jan Peremský

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:03:08