【发布时间】:2017-10-01 21:15:42
【问题描述】:
我开始使用 Arquillian 并按照教程进行操作。它涵盖了如何将 EJB 注入测试用例。由于 Arquillian 的目标是 Java Web 和 EE 项目,我很惊讶本教程没有涉及实体类和 EJB 接口的分离,因为至少 EE 项目中将所有内容都转储到一个项目中的情况很少见。
由于教程中没有涵盖任何内容,并且任何 EE 容器都没有可以理解的错误消息,因此我设法通过反复试验提取了一个测试用例,它显示了在
中使用的类@Deployment
public static JavaArchive createDeployment() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(MyXBean.class, DefaultMyXBean.class, TermsOfUse.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
在类路径上,但不在包含测试的同一个 Maven 项目中,由于NoClassDefFoundError 而失败。将类移动到项目中而不涉及其他任何内容,使部署工作。
有没有办法在“真正的”Java EE 中使用 Arquillian,其中实体和接口不包含在测试的 .war 中,而是作为 .war 的父 .ear 存档中的兄弟姐妹?
我可以考虑从 Maven 缓存中添加带有硬编码路径的 JAR,但这不可能,不是吗?
How test in Java ee using Arquillian maven multiple project 可能是同样的问题。
【问题讨论】:
-
EE projects where everything is dumped in one project are rare为什么会这样?至少对于 jboss7 和 wildfly,您不再需要使用 EAR。 -
也许我错过了最近的 Java EE 开发,但是包含单独的 WAR 和 JAR 存档的 afaik EAR 在世界上有它们的合法地位。 Arquillian 能否很好地处理它们?如何处理?
标签: java maven jakarta-ee jboss-arquillian