【发布时间】:2021-01-16 09:40:17
【问题描述】:
在 Quarkus 测试中,可以通过使用 @Inject 注释来轻松使用 bean:
package com.test;
@QuarkusTest
class InjectionTest {
@Inject
SomeBean someBean;
@Test
void someTest() {
// Testing logic, assertions and all
}
“SomeBean”:
package com.test;
@ApplicationScoped
public class SomeBean {
}
很遗憾,这会在使用多模块设置时导致错误。可以在此处找到此类设置的示例项目:https://github.com/lssoares/multi-maven-quarkus 要重现,只需尝试将任何 bean 注入任何测试。
抛出的错误如下所示:
Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type com.test.SomeBean and qualifiers [@Default]
- java member: com.test.InjectionTest#someBean
当我运行应用程序时,这个 bean 的注入非常顺利。 为什么 Quarkus 在正常上下文中有 bean,但在测试上下文中没有?为什么这个问题特别出现在多模块设置中?更重要的是,如何解决这个问题?
【问题讨论】: