【发布时间】:2015-12-04 03:12:19
【问题描述】:
我想在嵌入式 WildFly 实例上对我的战争进行宏观(不是微观!)黑盒测试。
我的 maven 项目是这样的
<project>
...
<packaging>war</packaging>
<!-- Lots of classes in src/main/webapp and files in src/main/webapp -->
<dependencies>
<!-- Lots of compile/runtime dependencies that change very frequently -->
<!-- Lots of test dependencies that change very frequently -->
</dependencies>
</project>
我的 arquillian 测试需要满足以下要求:
-
将整个战争部署到测试中的应用服务器。这包括所有生产类、所有运行时依赖项和所有
src/main/webapp文件。从维护的角度来看,进行微部署是不可能的,因为类依赖和 jar 依赖变化非常频繁。因此,我们无法枚举 ShrinkWrap 部署中的任何内容。 -
不要在测试或 arquillian.xml 中对 maven
pom.xml已知的任何内容进行硬编码。这包括版本字符串、依赖列表、包或类列表、应用服务器安装目录等。 - 不要使用超过 1 个 maven 模块。我测试我的战争的测试属于产生战争的同一 maven 模块的 test 文件夹中。
- 签出我的代码的用户需要能够简单地运行测试:
-
测试需要从 IntelliJ 运行,只需使用 IntelliJ 打开
pom.xml。 - 使用 WildFly 嵌入式容器,因此无需先安装任何东西,无需先运行任何进程,并且绝对无需设置
JBOSS_HOME环境变量。
-
测试需要从 IntelliJ 运行,只需使用 IntelliJ 打开
- 我只对黑盒测试感兴趣,所以我的所有测试都可以作为客户端运行。
理论上,这一切都可以通过 Arquillian 的 Maven 解析器、嵌入式容器、@RunAsClient、maven 故障安全插件、一些 arquillian.xml 魔术和许多 maven 魔术来实现。但在实践中,我无法让这些东西一起工作,我也找不到任何能体面地涵盖这种情况的文档,所以我希望有人能清楚地展示他们如何一起工作。
【问题讨论】:
-
如果你考虑宏测试,你可以看看arquillian-suite-extension 或者完全放弃Arquillian。为什么?因为 Arquillian 是关于微部署的,而您似乎并非如此。同样使用嵌入式 JEE 应用服务器就像 asking for troubles...
-
Vanilla Arquillian 应该真正支持 arquillian-suite-extension 开箱即用的功能!
标签: wildfly jboss-arquillian shrinkwrap