问题标签 [shrinkwrap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 来自 pom.xml 的 Maven 解析器,Shrinkwrap
在测试中,当我设置 pom.xml 的完整路径时,一切正常:
在很多例子中,只使用了 pom.xml,所以我尝试了:
但在这种情况下,我得到了例外:
如果我尝试传递“”../pom.xml”,结果相同。我必须将所有依赖项包含pom.xml
到战争档案中,这是在 arquillian 测试期间部署的,有解决方法吗?理想情况下,我想重用pom.xml 用于构建项目。我不想在“src/test/resources”文件夹中有单独的 pom.xml 文件。
编辑:我有@baba 的主要思想,但是我没有处理 pom.xml,而是basedir
通过 maven 资源过滤设置了一个属性:
我已将tests.properties
文件添加到test/resources
中,在文件中添加了一个属性:
在 pom.xml 我使用了 [ http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html]
在测试中,我已经加载了所有依赖项:
wildfly - 如何通过将整个战争部署到 WildFly 嵌入式来设置 arquillian 来测试 maven 战争项目?
我想在嵌入式 WildFly 实例上对我的战争进行宏观(而不是微观!)黑盒测试。
我的 Maven 项目看起来像这样
我的 arquillian 测试需要满足以下要求:
- 在测试中将整个战争部署到应用服务器。这包括所有生产类、所有运行时依赖项和所有
src/main/webapp
文件。从维护的角度来看,做微部署是不可能的,因为类依赖和 jar 依赖变化非常频繁。因此,我们无法枚举 ShrinkWrap 部署中的任何内容。 - 不要在 test 或 arquillian.xml中对 maven 已知的
pom.xml
任何内容进行硬编码。这包括版本字符串、依赖列表、包或类列表、应用服务器安装目录等。 - 不要使用超过 1 个 maven 模块。我测试我的战争的测试属于产生战争的同一个 Maven 模块的测试文件夹中。
- 签出我的代码的用户需要能够简单地运行测试:
- 只需使用 IntelliJ 打开后,测试需要从 IntelliJ 运行
pom.xml
。 - 使用 WildFly 嵌入式容器,所以不需要先安装任何东西,不需要先运行任何进程,也绝对不需要
JBOSS_HOME
先设置环境变量。
- 只需使用 IntelliJ 打开后,测试需要从 IntelliJ 运行
- 我只对黑盒测试感兴趣,所以我所有的测试都可以作为客户端运行。
理论上,这一切都可以通过 Arquillian 的 Maven 解析器、嵌入式容器、@RunAsClient
maven 故障安全插件、一些arquillian.xml
魔术和许多 maven 魔术来实现。但在实践中,我无法让这些东西一起工作,也找不到任何能体面地涵盖这种情况的文档,所以我希望有人能清楚地展示他们如何一起工作。
java - 无法在 Arquillian 测试中打开资源文件
我想在我的集成测试中使用 arquillian 读取一个测试 CSV 文件 (xxx.csv)。我正在按如下方式打包我的档案:
印刷品向我展示的地方:
如您所见,该文件显然在存档中(最后一行)。
现在我正在尝试打开它。我努力了:
但没有一个会起作用。
jakarta-ee - Arquillian 不能 @Inject Stateless bean
我有一个 Arquillian 1.1.8 的集成测试,我使用 Wildfly 8.2.1 作为容器。这是测试:
运行时,我得到这个异常:
我有一个类似的测试,包括一个有效的注射,所以这不是一般问题。
编辑:这里是 CSVFileWriter 的导入:
maven - Arquillian ShrinkWrap Web Archive 在不同环境中创建的方式不同
我正在使用 ShrinkWrap 创建一个战争文件,当通过 eclipse 和 m2eclipse (maven) 运行测试时,它在我的开发环境中正常工作。
当我在 Jenkins 上运行它时,战争部署是不同的,因此测试失败。例如,我在战争中添加自定义 MANIFEST.MF 作为清单资源,该资源在 Jenkins 环境中创建的战争中为空。
有任何想法吗?
编辑:我尝试了许多不同的方法来添加 MANIFEST.MF,原始代码是:
但我也试过:
并且还尝试先删除 MANIFEST.MF(如果它是由 ShrinkWrap 添加的),然后将其添加到存档中,即:
顺便说一句,以上所有在我的本地环境中都可以正常工作
更新:
我注意到两次战争之间的唯一区别是依赖 arquillian-jacoco。我忘记了在 Jenkins 中我使用配置文件运行测试,该配置文件使用 jacoco 运行覆盖。
因此,当我删除测试通过的依赖项(而不是配置文件)时,就会正确创建 MANIFEST.MF。
我想这意味着 jacoco 扩展以某种方式弄乱了 MANIFEST.MF?
java - 如何使用 ShrinkWrap for Arquillian 将 Gradle testCompile 依赖项添加到 WebArchive?
我对我的文件有以下依赖项,我gradle.build
不想将其放在我的最终war
文件中,但我需要它才能Arquillian
在测试阶段运行测试:
如果我使用的是 Maven,我可以编写如下内容:
但是,由于我使用的是 Gradle 解析器,我相信我不能这样做:
有没有办法在 Gradle 上做到这一点?如果我不添加上述依赖项,我的测试会NoClassDefFoundError
在 Selenium 类上失败。但是,如果我将 Selenium 依赖项更改为compile
而不是testCompile
,它可以工作,但是我的 war 文件大小从 3 兆字节跳到 20 兆字节,并充满了测试类。
提前致谢。
java - 从 EAR 创建部署存档
我有一个多模块 Maven 项目EAR
和一个集成测试项目。现在我想让我的测试针对一些类似于 EAR 的档案运行。
自然,我的第一个直截了当的方法是这样的:
我发现我自己的想法有多糟糕(例如,我每次开始测试时都需要构建 EAR,代码中的版本号也不能很好)。
所以经过数周的工作,我终于想出了这样的事情:
...开始时似乎根本没有结束。整个日志充满
如果他在多个存储库中搜索我们公司的工件,他将永远不会返回结果,这并不奇怪。
沿着这条线的某个地方,我想也许它会帮助一个一个地添加工件
但这会导致相同的错误消息(尽管不太常见),这样我就需要再次定义版本,这并不是我真正想要的。
我发现了一个错误(这是愚人节的玩笑,它必须如此),但这并不能帮助我找到我应该做些什么不同的事情来让它工作。
那么如果我已经有一个 Maven EAR 项目,那么在 Arquillian 中组装 EAR 的正确方法是什么?
java - 在 arquillian 中设置数据源
所以,我有一个在 main 中使用 persistence.xml 的项目,它位于 src/main/resources/META-INF
现在我想在编写自动化单元测试时使用内存数据库(H2)所以我需要另一个persistence.xml,我在src/test/resouce/META-INF中有它
所以我的问题是我怎样才能超越第一个持久性,
我还使用 shrikwrap 解析器来解析 pom.xml 中的所有依赖项,所以它解决了所有问题,我将它添加到 shrikwrap 以返回 WebArchive,有什么办法吗,我尝试了很多方法,例如创建配置文件或 maven 文件过滤,但不适用于 Arquillian当我解决所有问题并添加到部署中时。
你可以在下面找到我的 Arquillian 部署:
wildfly - Excpetionmapper 不适用于 Wildfly Swarm,但可以在 Wildfly Server 中使用
我正在尝试在 WildFly Swarm 中运行一个简单的实体 - 控制器 - 边界应用程序。这很好用,但是当我添加一个ExceptionMapper
来捕捉它时,NotFoundException
它确实在 WildFly 服务器 10 上工作,但在 WildFly 群中却不行。这是 Shrinkwrap 中的错误吗?这是 Wildfly Swarm 中的错误吗?或者我在 Shrinkwrapping 部署中做错了什么?
下面是 Swarm Main 类的具体代码:
这是我的群演示pom.xml
:
为了比较,这是我pom.xml
的 Wildfly 服务器应用程序:
为了完整起见,这里是 ExceptionMapper 的代码:
境界:
控制器:
和实体: