10

我在嵌入式服务器上为自己的集成测试运行 maven war 项目没有问题,但现在我需要运行多个 war 并从不同的项目进行测试。

我想设置以下场景...

我的本地工作区中有两个 Maven 战争项目,分别称为 War1 和 War2。我想要第三个 Maven 项目 WarIntegration,它只包含集成测试并执行以下操作:

  1. 包战争1
  2. 包战争2
  3. 启动嵌入式服务器
  4. 将两个战争部署到同一个嵌入式服务器
  5. 运行包含在 WarIntegration 中的集成测试(这将对 War1 和 War2 进行 http 调用)
  6. 停止嵌入式服务器

这可能吗?什么插件设置可以实现这一点?WarIntergration 应该是一个什么样的项目(打包)?War1 和 War2 应该是 WarIntegration 或依赖项中的模块吗?是否可以将所有配置添加到 WarIntegration 项目中,还是必须将其分布在各个项目中?

这类似于这个问题,除了我们必须使用由项目启动和停止的嵌入式服务器(可能在我们运行验证时)并且我们需要一个单独的项目进行集成测试: 我有一个多模块 Maven 2 POM,它有两个 WAR,如何配置它以在运行测试之前部署两个战争?

4

2 回答 2

6

我能够使用 cargo-maven2-plugin 实现这一点。

以下是感兴趣的任何人的相关 pom 部分...

...
<groupId>com.test</groupId>
<artifactId>webapp-integration</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
...
<dependencies>
        ...
        <dependency>
            <artifactId>webapp1</artifactId>
            <groupId>com.test</groupId>
            <version>1.0</version>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>webapp2</groupId>
            <artifactId>com.test</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>war</type>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.2.2</version>
                <configuration>
                    <container>
                        <containerId>jetty6x</containerId>
                        <type>embedded</type>
                    </container>
                    <configuration>
                        <type>standalone</type>
                        <properties>
                            <cargo.servlet.port>8085</cargo.servlet.port>
                        </properties>
                        <deployables>
                            <deployable>
                                <artifactId>webapp1</artifactId>
                                <groupId>com.test</groupId>
                                <type>war</type>
                                <pingURL>http://localhost:8085/testapp/</pingURL>
                                <properties>
                                    <context>testapp</context>
                                </properties>
                            </deployable>
                            <deployable>
                                <artifactId>webapp2</artifactId>
                                <groupId>com.test</groupId>
                                <type>war</type>
                                <pingURL>http://localhost:8085/testapp2/</pingURL>
                                <properties>
                                    <context>testapp2</context>
                                </properties>
                            </deployable>
                        </deployables>
                    </configuration>
                </configuration>
                <executions>
                    <execution>
                        <id>start-server</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-server</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.12</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.12</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <groups>com.test.integration.IntegrationTestMarker</groups>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/*.class</include>
                            </includes>
                            <skipTests>false</skipTests>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
于 2012-06-25T15:53:46.020 回答
3

注意,DEPLOYABLES 元素是插件/配置的子元素,而不是插件/配置/配置。

上面的例子应该是:

<plugins>
        <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <container>...</container>
                <configuration>
                    <type>standalone</type>
                    <properties>
                        <cargo.servlet.port>8085</cargo.servlet.port>
                    </properties>
                </configuration>
                <deployables>
                     <deployable>
                            <artifactId>webapp1</artifactId>
                            <groupId>com.test</groupId>
                            <type>war</type>
                            <pingURL>http://localhost:8085/testapp/</pingURL>
                            <properties>
                                <context>testapp</context>
                            </properties>
                      </deployable>
                      <deployable>
                            <artifactId>webapp2</artifactId>
                            <groupId>com.test</groupId>
                            <type>war</type>
                            <pingURL>http://localhost:8085/testapp2/</pingURL>
                            <properties>
                                <context>testapp2</context>
                            </properties>
                      </deployable>
                 </deployables>
             </configuration>
        </plugin>
 </plugins>

希望有帮助!

于 2014-10-30T08:19:14.860 回答