如何让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ý
相关产品推荐
相关产品推荐

