我熟悉Tomcat / TomEE和使用Arquillian测试应用程序。现在正在切换到开放自由。我看到有一个用于Arquillian的模块,该模块使用嵌入式Open Liberty,但似乎需要现有的Open Liberty安装,其安装路径在配置中提供。由于安装必须以完全相同的路径进行,因此这使其不可携带,因此不适合自动化测试。 Arquillian和TomEE是独立的,无需安装。因此,我的问题是为什么“开放自由”还无法做到这一点?这是为将来计划的吗?
作为参考,这是将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,那就太好了。
答案 0 :(得分:1)
如果您看看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 你会看到一个例子arquillian.xml该套$ wlpHome
<property name="wlpHome">${wlp}</property>
来自环境变量$ wlp。 ( 'WLP' 是短的WebSphere自由资料)
在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
如果您还有其他疑问,请发表... 并希望您喜欢OpenLiberty-它震撼了!
戈登
答案 1 :(得分:0)
走得更远..所以以上就是我们进行自动化测试的方式 但它仍然使用该位置。
我知道,关于根本不需要指定任何位置,您会说: “你需要做的唯一的事情是添加一些Maven依赖的测试范围是拉在TomEE(嵌入式)如果同一会开放自由,这将是伟大的工作。”
所以,思维,Maven会放了一堆的类在classpath由于TomEE 相关性,然后测试运行将找到合适的容器来 上运行测试。
我将提出一个问题 https://github.com/OpenLiberty/liberty-arquillian/issues/39 覆盖要求,请随时添加备注等。
答案 2 :(得分:0)
您似乎想要实现的结果是使用Arquillian实现嵌入式自由运行。但是,据我所知,openliberty团队目前仅提供一个远程容器适配器和一个托管容器适配器。
由于我们有类似的需求,因此希望运行自动化集成测试,而不必在现场安装Openliberty服务器。我们设法使用 liberty-maven-plugin 解决此问题。
构建/测试过程将是:
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>
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>
这样,我们可以确保根据我们的喜好,可运行的自由服务器始终存在于我们的本地环境中,例如我们的Jenkins CI / CD服务器,实际上具有与嵌入式容器相同的效果。