【发布时间】: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