当前位置: 首页 > 知识库问答 >
问题:

焊接2.4.2.最终maven测试

陶炫明
2023-03-14

我们面临着与这里所述相同的问题:使用src/test/meta-inf/beans.xml中的替代生产者进行焊接。

共有1个答案

申辉
2023-03-14

Weld本身对此无法提供帮助,Weld SE实际上会选择类路径上的第一个beans.xml。更准确地说,main/resources/meta-inf/beans.xml将用于bean归档main/java/,而test/resources/meta-inf/beans.xml将用于bean归档test/java/。因此,混合这将是不明智的,最好,所以焊接不支持它默认。

不管怎样,有几个选择来解决你的麻烦。

>

  • 使用Arquillian+Shrinkwrap

    在单元测试的某个地方,您正在启动焊接容器。在这样做的时候,您可以使用weld#disablediscovery(),这意味着您将创建一个合成bean存档。在这样的存档中,默认的发现是禁用的,并且只有您专门添加的东西(通过AddBeanClassesAddPackage、..)将降落到所产生的存档中。而且,由于您已经发现了,所以不会接收beans.xml!相反,您定义了所有的替换、拦截器、...(Weld类中也有用于此的方法)。现在,我想如果需要重复这样做,可以“轻松地”将其放置到某个@before方法中。或者,您也可以使用weld-junit,这将为您提供JUnit@rule,并允许您轻松地描述每个类的部署。

    以上两种方法都能帮助你克服这些困难。但正如我所说的,没有办法实现这一点与简单的焊接SE。

  •  类似资料:
    • 我试图在JavaSE中建立一个非常简单的weld实现。 我有扩展类: 然后,我有一个简单的类,我想注入: 最后,我想把它注入课堂: 结果是: 我希望在构造Test()时注入简单类,并调用postconstruct方法,该方法应输出预期文本。 我到底做错了什么?

    • 像这样上课: 有没有可能告诉Weld不要注射到c中?我可以否决使用事件的类: 但是B物体也不会被注射。我在搜索类似这样的东西:“如果类名是A,字段类型是C,那么省略注入。” 更具体地说,我希望HK2引擎注入“C”字段,问题是HK2和焊接都使用@注入注释。 我尝试了西利亚罗斯的解决方案。我找到了想要添加自定义注入实现的类型,比如: 在我添加了覆盖注入(…)在美国 比如: 在Manager eBVia

    • 问题内容: 可以在Java中将接口声明为final吗? 问题答案: 接口是100%抽象的,创建接口实例的唯一方法是实例化实现该接口的类。允许接口完全没有意义。 编辑 问题不像我最初想到的那样彻底。最终接口是不能由其他接口扩展但可以表面上实现的接口。 我可以想到最终类和最终接口之间的区别。扩展类可能会损害其完整性,因为它包含某些状态。扩展接口只是增加了操作,并且不会损害实现的完整性,因为接口本身是无

    • 我正在junit测试中使用Weld SE。它似乎没有注入CDIBean的内部场。我使用的是maven artifcat 没有例外,该字段只是空的。我尝试了构造函数注入,而不是字段注入: 在这种情况下,我会收到一条异常消息:org。jboss。焊接例外。不满意的解决方案例外:WELD-001334:带限定符的Z型服务的不满意依赖项

    • 有一个简单的Mongo DB生产者连接到Mongo数据库 我的src/main/resources/meta-inf中的一个资源文件 WeldContext和WeldJUnit4Runner来自这里-http://memorynotfound.com/java-se-unit-testing-cdi-junit-jboss-weld-se/

    • BRPOP key [key ...] timeout BRPOP 是列表的阻塞式(blocking)弹出原语。 它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。 关于阻塞操作的更多信息,请查看 BLPOP