gpt4 book ai didi

testing - 集成测试期间与 Weld 的不满足依赖关系

转载 作者:行者123 更新时间:2023-11-28 19:59:06 25 4
gpt4 key购买 nike

我能够部署一个与 Weld 配合良好的 RESTEasy 应用程序(这意味着我的 CDI 可以正常工作),但我在集成测试中遇到了一些问题。我收到此错误:

org.jboss.weld.exceptions.DeploymentException:
WELD-001408: Unsatisfied dependencies for type SomeService with qualifiers @Default

测试时:

@RunWith(WeldJUnit4Runner.class)
public class SomeServiceIT {

@Inject
private SomeService service;

@Test
public void test() {
System.out.println(service);
}
}

我日志中的最后一条消息是

DEBUG::WELD-000100: Weld initialized. Validating beans

src/test/resources/META-INF/beans.xml 的内容:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
</beans>

顺便说一下,我尝试了 cdi-unit 库并且它可以工作,但我需要使用我自己的 WeldJUnit4Runner,目前它是:

public class WeldJUnit4Runner extends BlockJUnit4ClassRunner {

private final Weld weld;
private final WeldContainer container;

public WeldJUnit4Runner(Class<?> klass) throws InitializationError {
super(klass);
this.weld = new Weld();
this.container = weld.initialize();
}

@Override
protected Object createTest() throws Exception {
return container.instance().select(getTestClass().getJavaClass()).get();
}
}

我使用weld-se 2.4.1.Final 进行测试。
谢谢。

编辑:
因此,Weld 似乎只查看 src/test/java(当我将 SomeService 复制到 src/test/java 时,它会起作用)。这很愚蠢,我不会复制我所有的类来测试它们...如何告诉 Weld 从 src/main/java 中检索类?

最佳答案

因此,除了现有的 src/main/webapp/WEB-INF 之外,我还可以通过创建 src/main/resources/META-INF/beans.xml 来使其工作/beans.xmlsrc/test/resources/META-INF/beans.xml 意味着现在我在同一个项目中有 3 倍完全相同的文件,我觉得这很愚蠢但我猜这就是 Weld 世界中的情况...

感谢大家的宝贵时间。

编辑:
实际上,我只能使用 src/main/resources/META-INF/beans.xml 部署应用程序(我删除了 src/main/webapp/WEB-INF/beans.xml)

关于testing - 集成测试期间与 Weld 的不满足依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41836690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com