【问题标题】:Weld and test-jar焊接和测试罐
【发布时间】:2014-02-26 17:24:21
【问题描述】:

我们有一个包含以下模块的 Maven 多模块项目:

  • prj-srv
  • prj-客户端

srv 项目包含 EJB。在 prj-srv/src/test 中,我们有 EJB 的 @Alternative 实现,在 beans.xml 的替代部分中指定。这行得通。

项目 prj-client 具有 prj-srv 作为依赖项。此外,它还依赖于类型为 test-jar、范围 test 的 prj-srv,因此它可以使用替代的 EJB 实现进行测试。这也有效。

现在:在 prj-client/src/main/java 中,我们有 EJB 接口的本地实现(以便我们可以缓存数据),并使用我们的限定符 @Cacheable 进行注释。我想做的是在 prj-client/src/test/java 中设置测试,以便它们使用我的 prj-srv 测试实现(那些不可缓存的,但谁在乎,因为它是用于测试的)。

我试过了:

  • 在 prj-client/src/test/java 中使用生产者方法 (@Produces @Alternative @Cacheable) 创建一个类,但我不知道如何配置 beans.xml 以将其设置为替代方法

  • 在 prj-srv/src/test/java 中创建扩展测试 EJB 的类,注解 @Alternative @Cacheable,并将它们放在 src/test/resources/META-INF/beans.xml 中的替代项中部分,但weld 仍然从 src/main/java 注入“真正的”@Cacheable bean。

将@Alternative 与限定符混合是否有问题?如何让我的测试使用合格类的替代实现?

【问题讨论】:

    标签: java maven dependency-injection cdi weld


    【解决方案1】:

    刚刚找到:我忘记用@Inject 标记@Cacheable 实现的构造函数。显然,即使它在 beans.xml 中被标记为替代,由于 Weld 不知道如何初始化它,而不是抛出错误,它只是默默地决定忽略替代...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多