首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >weld 2.4.2.最终的maven测试

weld 2.4.2.最终的maven测试
EN

Stack Overflow用户
提问于 2017-02-08 06:45:05
回答 1查看 79关注 0票数 0

我们面临的问题与这里提到的问题相同:Weld using alternative producer from src/test/META-INF/beans.xml

对于maven和weld se,对于测试,weld不使用位于beans.xml /resources/META-INF中的资源。

我们在Google上看,我在Weld的Jira问题上,但似乎其他人没有和我们一样的问题。

那么,有没有人知道如何在Junit test和Maven中使用weld,以及如何通过位于beans.xml /resources/META-INF中的资源来配置Weld SE?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 16:57:58

Weld本身不能帮助你做到这一点,Weld SE实际上会选择类路径上的第一个beans.xml。更准确地说,main/resources/META-INF/beans.xml将用于bean归档main/java/,而test/resources/META-INF/beans.xml将用于bean归档test/java/。因此,将其混合在一起充其量是不明智的,因此Weld默认不支持它。

无论如何,有几个选项可以解决您的问题。

  1. Use Arquillian +卷积包裹

对于CDI测试,这是您可以期望的最好的方法,而且是一个非常好的方法,一旦您学会了它。包覆面提取将允许您完全根据需要定制展开,包括仅包含所需的类以及所需的beans.xml。有一个甚至在Weld SE测试套件中使用的Arquillian container for Weld SE,因此您可以在引导Weld SE的同时启发自己的there.

  • Disable发现

在单元测试中的某个地方,您正在启动Weld容器。在执行此操作时,您可以使用Weld#disableDiscovery(),这意味着您将创建一个合成bean归档。在这样存档中,默认发现被禁用,只有您专门添加的内容(通过methods,如addBeanClassesaddPackage、..)将登陆到生成的存档中。既然你没有发现,beans.xml no 就不会被拾取!相反,您可以定义所有的替代方案、拦截器……(同样,在Weld class上也有相应的方法)。现在,我想这可以“轻松”地放到某个@Before方法中,如果您需要重复这样做的话。

以上两种方法都可以帮助你克服困难。但正如我所说的,没有办法实现这一点,仅仅是普通的焊接SE。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42101435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档