【问题标题】:Maven integration tests with 2 modules带有 2 个模块的 Maven 集成测试
【发布时间】:2018-06-05 21:10:21
【问题描述】:

我有一个包含 2 个模块的应用程序:

  • Web JSF(在 Tomcat 上部署 WAR)

  • REST 服务(在 Wildfly 上部署 WAR)

对于集成测试,我使用 maven 插件:

  • maven 故障保护插件

  • fabric8 maven 插件

我的测试源代码和资源位于两个应用程序 src/integration-test/java 中。

在集成测试阶段,fabric8 构建 Wildfly docker 映像,复制构建的 articact(REST 服务 WAR),启动容器并运行测试。它工作正常。

但是...我想配置 maven 来部署 2 个应用程序( Web JSF WAR 工件和 REST 服务 WAR)并从 JSF WAR/src/integration-test/java 运行集成测试。 使用 fabric8 插件可以轻松构建和运行 Tomcat 和 Wildfly 容器,但我无法找到如何从不同的 Maven 模块部署 2 个不同的工件。 或许你有什么想法?

最好的问候, 乔丹。

【问题讨论】:

  • 首先我建议将您的集成测试保留在src/test/java 中,并遵循单元测试*Test.java 等命名约定和*IT.java 等集成测试等。如果您想部署2 个应用程序,我将创建一个单独的模块,该模块依赖于您要部署的两个应用程序并在那里进行部署......(也是 Docker 容器......)

标签: java maven docker integration-testing fabric8


【解决方案1】:

io.fabric8 docker-maven-plugin 支持多个镜像。您可以创建一个负责运行集成测试的模块。此模块将取决于您在问题中提到的 2 个 WAR 工件。

    <dependencies>
        <dependency>
            <groupId>com.your.maven.group.here</groupId>
            <artifactId>your-maven-artifact</artifactId>
            <version>${project.version}</version>
            <type>war</type>
        </dependency>

        <dependency>
            ...
        </dependency>
    </dependencies>

然后您可以使用 io.fabric8 设置必要的容器。这是我项目中的一个示例(为简单起见,删除了一些细节)。这个例子不是关于 Tomcat 和 Wildfly,只是为了说明这个想法。

    <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <configuration>
            <images>
                <image>
                    ....
                </image>
                <image>
                    <name>my-admin-site</name>
                    <alias>admin-ux</alias>
                    <build>
                        <from>jetty</from>
                        <ports>
                            <port>8080</port>
                        </ports>
                        <runCmds>
                            <run>mkdir -p /run/jetty /tmp/jetty</run>
                            <run>chmod -R 1777 /tmp</run>
                            <run>chown -R jetty:jetty /var/lib/jetty /run/jetty /tmp/jetty</run>
                        </runCmds>
                        <assembly>
                            <mode>dir</mode>
                            <basedir>/var/lib/jetty</basedir>
                            <inline xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2">
                                <id>my-admin-ux</id>
                                <dependencySets>
                                    <dependencySet>
                                        <includes>
                                            <include>com.your.maven.group.here:your-maven-artifact:war</include>
                                        </includes>
                                        <outputDirectory>./webapps</outputDirectory>
                                        <outputFileNameMapping>myAdminSite.war</outputFileNameMapping>
                                    </dependencySet>
                                </dependencySets>
                                <files>
                                    <file>
                                        <source>src/main/docker/admin-ux/resources/service.properties</source>
                                        <outputDirectory>./resources</outputDirectory>
                                    </file>
                                </files>
                            </inline>
                            <user>jetty:jetty</user>
                        </assembly>
                    </build>
                    <run>
                        <ports>
                            <port>10540:8080</port>
                        </ports>
                        <links>
                            <link>zookeeper:zookeeper</link>
                        </links>
                    </run>
                </image>
                <image>
                    .....
                </image>
            </images>
        </configuration>
    </plugin>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2018-09-10
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多