3

我正在努力综合如何正确使用 maven-failsafe 和 fabric8-maven 插件。

我想运行集成测试,但在预集成测试阶段,启动一个运行数据库的 docker 容器,并在集成后阶段停止容器。

查看 fabric8 docker-maven-plugin文档,它指出这是可能的,但似乎没有一个示例说明了这一点。

更新#1:

这是成功为我工作的配置:

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.15.9</version>
    <executions>
        <execution>
            <id>start-neo4j</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>start</goal>
            </goals>
        </execution>
        <execution>
            <id>stop-neo4j</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <images>
            <image>
                <alias>neo4j</alias>
                <name>neo4j:2.3.2-enterprise</name>
                <run>
                    <ports>
                        <port>7474</port>
                    </ports>
                    <wait>
                        <log>Starting...</log>
                        <time>20000</time>
                    </wait>
                </run>
            </image>
        </images>
    </configuration>
</plugin>
4

2 回答 2

3

docker-maven-plugin有几个示例,它们显示了绑定是如何工作的:

  • https://github.com/fabric8io/docker-maven-plugin/blob/master/samples/data-jolokia-demo/包含用于运行集成测试的各种配置变体,其中在预测试阶段启动tomcat,应用程序部署,测试运行,然后tomcat被拆除。

  • https://github.com/rhuss/docker-maven-sample对您来说可能更有趣,因为它涵盖了在集成测试之前启动 Postgres 数据库的用例(包括等待数据库完全启动)。绑定显示在这里

    <executions>
      <execution>
        <id>start</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>build</goal>
          <goal>start</goal>
        </goals>
      </execution>
      <execution>
        <id>stop</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>stop</goal>
        </goals>
      </execution>
    </executions>
    

但我建议更详细地检查 pom.xml,因为它有更多信息,例如如何设置等待部分。如果仍有不清楚的地方,请随时在此项目中打开问题。

于 2016-07-14T10:14:06.423 回答
0

我们推荐使用 docker 在 maven 中进行集成和系统测试的方式是通过fabric8 arquillian 插件。这需要为测试创建一个新的命名空间并提供所有 kubernetes 资源,然后运行您的 JUnit 测试用例以运行断言等。

您需要一个用于数据库的 docker 映像并将其包装在 kubernetes yaml/json 文件中,以便在您的应用程序由 fabric8-arquillian 部署时预先运行

于 2016-07-14T09:24:24.157 回答