Testing Arquillian和Open Liberty是否需要现有安装?

Testing Arquillian和Open Liberty是否需要现有安装?,testing,open-liberty,Testing,Open Liberty,我熟悉Tomcat/TomEE和使用Arquillian测试应用程序。现在我们正转向开放自由。我看到Arquillian有一个使用嵌入式OpenLiberty的模块,但它似乎需要现有的OpenLiberty安装,其路径在配置中提供。这使得它不可移植,因此不适合自动测试,因为安装必须位于完全相同的路径上。Arquillian和TomEE是独立的,无需安装。因此,我的问题是,为什么开放自由也不可能做到这一点?这是为将来计划的吗 以下是如何将Arquillian与TomEE/Tomcat结合使用,以供

我熟悉Tomcat/TomEE和使用Arquillian测试应用程序。现在我们正转向开放自由。我看到Arquillian有一个使用嵌入式OpenLiberty的模块,但它似乎需要现有的OpenLiberty安装,其路径在配置中提供。这使得它不可移植,因此不适合自动测试,因为安装必须位于完全相同的路径上。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>

-1
-1
用户=通过
如您所见,运行测试不需要本地安装的路径。您需要做的唯一一件事是在
test
范围中添加两个Maven依赖项,将它们拉入到TomEE(嵌入式)中。如果同样的方法也适用于开放自由,那就太好了。

如果你看看 您将看到一个示例arquillian.xml,它设置$wlpHome

 <property name="wlpHome">${wlp}</property>
${wlp}
来自环境变量$wlp。 ('wlp'是Websphere Liberty Profile的缩写)

wlpHome变量在此处的托管/本地容器中使用:

动态执行此操作的示例是 系统属性${wlp}此处:

如果您还有任何疑问,请发布它们。。。 希望你喜欢OpenLiberty——它摇滚


Gordon

更进一步..以上就是我们如何进行自动化测试 但它仍然使用这个位置

我明白了,关于根本不需要指定任何位置,你说: “您需要做的唯一一件事是在测试范围中添加两个Maven依赖项,这些依赖项可以拉入TomEE(嵌入式)。如果同样适用于Open Liberty,那就太好了。”

因此,考虑到这本书,maven将在类路径上放置一堆类 然后,测试运行将找到合适的容器 在上运行测试

我将在会议上提出一个问题
为了满足要求,请随意添加备注等。

您似乎试图实现的结果是使用arquillian为liberty提供嵌入式运行时。然而,据我所知,openliberty团队目前只提供了一个远程容器适配器和一个托管容器适配器

我们也有类似的需求,希望在不需要Openliberty服务器的情况下运行自动化集成测试。我们使用liberty maven插件解决了这个问题

然后,构建/测试过程将是:

  • 运行
    mvnverify
    ,liberty maven插件将生成我们要对其运行测试的指定openliberty

  • 通过这种方式,我们可以确保本地环境或Jenkins CI/CD服务器中始终存在符合我们喜好的可运行liberty服务器,基本上获得了与嵌入式容器相同的效果

    你能提供更多关于你所说的嵌入式开放自由容器的信息吗?正式地说,我们只提供一个托管的和远程的容器:如果“在相同的确切路径上存在”,您的意思是必须通过文件系统访问它,那么对于托管容器来说,这是正确的。对于远程容器,您可以在别处托管Liberty,并使用JMX连接/运行测试。那太好了!
                        <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>
    
    <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>