Arquillian 和 Open Liberty 需要现有安装吗?
Arquillian and Open Liberty requires existing installation?
我熟悉 Tomcat/TomEE 并使用 Arquillian 测试应用程序。现在我们正在转向 Open Liberty。我看到有一个使用嵌入式 Open Liberty 的 Arquillian 模块,但它似乎需要一个现有的 Open Liberty 安装,其路径在配置中提供。这使得它不可移植,因此不适合自动化测试,因为安装必须存在于完全相同的路径中。 Arquillian 和 TomEE 是独立的,无需安装。因此,我的问题是,为什么 Open Liberty 也不可能做到这一点?这是未来的计划吗?
作为参考,这是将 Arquillian 与 TomEE/Tomcat 一起使用的方式:
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/schema/arquillian"
xsi:schemaLocation="http://jboss.org/schema/arquillian http://www.jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="tomee" default="true">
<configuration>
<property name="httpPort">-1</property>
<property name="stopPort">-1</property>
<property name="users">user=pass</property>
</configuration>
</container>
</arquillian>
如您所见,没有 运行 测试所需的本地安装路径。您唯一需要做的就是在 test
范围内添加几个 Maven 依赖项,以引入 TomEE(嵌入式)。如果同样适用于 Open Liberty,那就太好了。
如果你看看https://github.com/OpenLiberty/open-liberty/blob/integration/dev/com.ibm.ws.microprofile.config.1.2_fat_tck/publish/tckRunner/tck/src/test/resources/arquillian.xml
您将看到一个设置 $wlpHome
的示例 arquillian.xml
<property name="wlpHome">${wlp}</property>
来自环境变量 $wlp。
('wlp' 是 Websphere Liberty Profile 的缩写)
此处managed/local容器中使用了wlpHome变量:
https://github.com/OpenLiberty/liberty-arquillian/blob/42cb523b8ae6596a00f2e1793e460a910d863625/liberty-managed/src/main/java/io/openliberty/arquillian/managed/WLPManagedContainer.java#L224
动态执行此操作的一个示例是
系统 属性 ${wlp} 在这里:
https://github.com/OpenLiberty/open-liberty/blob/95c266d4d6aa57cf32b589e7c9d8b39888176e91/dev/fattest.simplicity/src/componenttest/topology/utils/MvnUtils.java#L161
如果您有任何疑问,请 post 他们...
并希望您喜欢 OpenLiberty - 它很棒!
戈登
更进一步..以上就是我们做自动化测试的方法
但它仍然使用该位置。
我明白了,关于根本不需要指定任何位置,你说:
"The only thing you need to do is a add a couple of Maven dependencies in test scope that pull in TomEE (embedded). If the same would work for Open Liberty that would be great."
所以,想一想,由于 TomEE,maven 会在类路径上放一堆 类
dependancies 然后测试 运行 会找到合适的容器
运行 正在测试。
我将在
https://github.com/OpenLiberty/liberty-arquillian/issues/39
为了满足要求,请随时添加备注等。
您似乎试图实现的结果是使用 arquillian 的嵌入式 运行自由时间。然而,据我所知,目前openliberty团队只提供了一个远程容器适配器和一个托管容器适配器。
我们有类似的需求,想要 运行 自动化集成测试,而我们不一定要有 Openliberty 服务器就地。我们设法使用 liberty-maven-plugin.
解决了这个问题
build/testing 过程将是:
- 运行
mvn verify
, liberty-maven-plugin 将生成指定的 openliberty,我们希望 运行 我们的测试针对它。
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>${version.liberty-maven-plugin}</version> <!-- plugin version -->
<configuration>
<assemblyArtifact> <!-- Liberty server to run test against -->
<groupId>io.openliberty</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>18.0.0.4</version>
<type>zip</type>
</assemblyArtifact>
<configDirectory>src/liberty/${env}/</configDirectory>
<configFile>src/liberty/server.xml</configFile>
<serverName>defaultServer</serverName>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>create-server</goal>
</goals>
</execution>
</executions>
</plugin>
- As liberty-maven-plugin 默认情况下将 Liberty 服务器添加到
target/
文件夹
<arquillian xmlns="http://jboss.org/schema/arquillian">
<container qualifier="liberty-managed" default="true">
<configuration>
<property name="wlpHome">target/liberty/wlp</property>
<property name="serverName">defaultServer</property>
</configuration>
</container>
</arquillian>
这样我们就可以确保根据我们的喜好 运行nable liberty 服务器始终存在于我们的本地环境中,例如我们的 Jenkins CI/CD 服务器,基本上获得与拥有嵌入式容器相同的效果。
我熟悉 Tomcat/TomEE 并使用 Arquillian 测试应用程序。现在我们正在转向 Open Liberty。我看到有一个使用嵌入式 Open Liberty 的 Arquillian 模块,但它似乎需要一个现有的 Open Liberty 安装,其路径在配置中提供。这使得它不可移植,因此不适合自动化测试,因为安装必须存在于完全相同的路径中。 Arquillian 和 TomEE 是独立的,无需安装。因此,我的问题是,为什么 Open Liberty 也不可能做到这一点?这是未来的计划吗?
作为参考,这是将 Arquillian 与 TomEE/Tomcat 一起使用的方式:
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/schema/arquillian"
xsi:schemaLocation="http://jboss.org/schema/arquillian http://www.jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="tomee" default="true">
<configuration>
<property name="httpPort">-1</property>
<property name="stopPort">-1</property>
<property name="users">user=pass</property>
</configuration>
</container>
</arquillian>
如您所见,没有 运行 测试所需的本地安装路径。您唯一需要做的就是在 test
范围内添加几个 Maven 依赖项,以引入 TomEE(嵌入式)。如果同样适用于 Open Liberty,那就太好了。
如果你看看https://github.com/OpenLiberty/open-liberty/blob/integration/dev/com.ibm.ws.microprofile.config.1.2_fat_tck/publish/tckRunner/tck/src/test/resources/arquillian.xml 您将看到一个设置 $wlpHome
的示例 arquillian.xml <property name="wlpHome">${wlp}</property>
来自环境变量 $wlp。 ('wlp' 是 Websphere Liberty Profile 的缩写)
此处managed/local容器中使用了wlpHome变量: https://github.com/OpenLiberty/liberty-arquillian/blob/42cb523b8ae6596a00f2e1793e460a910d863625/liberty-managed/src/main/java/io/openliberty/arquillian/managed/WLPManagedContainer.java#L224
动态执行此操作的一个示例是 系统 属性 ${wlp} 在这里: https://github.com/OpenLiberty/open-liberty/blob/95c266d4d6aa57cf32b589e7c9d8b39888176e91/dev/fattest.simplicity/src/componenttest/topology/utils/MvnUtils.java#L161
如果您有任何疑问,请 post 他们... 并希望您喜欢 OpenLiberty - 它很棒!
戈登
更进一步..以上就是我们做自动化测试的方法 但它仍然使用该位置。
我明白了,关于根本不需要指定任何位置,你说: "The only thing you need to do is a add a couple of Maven dependencies in test scope that pull in TomEE (embedded). If the same would work for Open Liberty that would be great."
所以,想一想,由于 TomEE,maven 会在类路径上放一堆 类 dependancies 然后测试 运行 会找到合适的容器 运行 正在测试。
我将在 https://github.com/OpenLiberty/liberty-arquillian/issues/39 为了满足要求,请随时添加备注等。
您似乎试图实现的结果是使用 arquillian 的嵌入式 运行自由时间。然而,据我所知,目前openliberty团队只提供了一个远程容器适配器和一个托管容器适配器。
我们有类似的需求,想要 运行 自动化集成测试,而我们不一定要有 Openliberty 服务器就地。我们设法使用 liberty-maven-plugin.
解决了这个问题build/testing 过程将是:
- 运行
mvn verify
, liberty-maven-plugin 将生成指定的 openliberty,我们希望 运行 我们的测试针对它。
<plugin>
<groupId>net.wasdev.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>${version.liberty-maven-plugin}</version> <!-- plugin version -->
<configuration>
<assemblyArtifact> <!-- Liberty server to run test against -->
<groupId>io.openliberty</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>18.0.0.4</version>
<type>zip</type>
</assemblyArtifact>
<configDirectory>src/liberty/${env}/</configDirectory>
<configFile>src/liberty/server.xml</configFile>
<serverName>defaultServer</serverName>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>create-server</goal>
</goals>
</execution>
</executions>
</plugin>
- As liberty-maven-plugin 默认情况下将 Liberty 服务器添加到
target/
文件夹
<arquillian xmlns="http://jboss.org/schema/arquillian">
<container qualifier="liberty-managed" default="true">
<configuration>
<property name="wlpHome">target/liberty/wlp</property>
<property name="serverName">defaultServer</property>
</configuration>
</container>
</arquillian>
这样我们就可以确保根据我们的喜好 运行nable liberty 服务器始终存在于我们的本地环境中,例如我们的 Jenkins CI/CD 服务器,基本上获得与拥有嵌入式容器相同的效果。