如何解决UnsatisfiedResolutionException - 来自 Quarkus 扩展的 CDI bean
我正在开发 Quarkus 扩展。但是我在注入 CDI Beans 时遇到了一些问题。
在运行时模块中我有这个类:
@ApplicationScoped
public class CustomrestClientBuilder{
//@Produces - Removed
//@ApplicationScoped - Removed
public RestClientBuilder newBuilder(String url) throws MalformedURLException {
return RestClientBuilder.newBuilder().baseUrl(new URL(url));
}
}
在部署模块中,我有这个类:
class RestClientExtensionProcessor {
private static final String FEATURE = "rest-client-extension";
@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
@BuildStep
public AdditionalBeanBuildItem producer() {
return new AdditionalBeanBuildItem(CustomrestClientBuilder.class);
}
}
问题出现在测试类中。我将测试放在部署模块中,但它失败了(但是,在运行时模块中它可以工作)。
public class CustomrestClientBuilderTest {
@Inject
private CustomrestClientBuilder customrest;
@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnittest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class));
@Test
public void testGreeting() {
IDummyRestClient restClient = customrest.newBuilder("url")
.build(IDummyRestClient.class);
}
}
错误是:
Build Failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception:
javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException:
Unsatisfied dependency for type CustomrestClientBuilder and qualifiers [@Default]
我之前看过这篇文章:
Exposing CDI beans from Quarkus extensions
更新
这种方式有效(添加我需要测试的类)。 有意义吗?
@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnittest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(CustomrestClientBuilder.class,IDummyRestClient.class));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。