问题描述
我正在开发 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 (将#修改为@)