10

組み込みサーバーで独自の統合テストのためにMaven戦争プロジェクトを実行することに問題はありませんでしたが、複数の戦争を実行して別のプロジェクトからテストする必要があります。

次のシナリオを設定したいと思います...

ローカルワークスペースには、War1とWar2という2つのMaven戦争プロジェクトがあります。統合テストのみを含み、以下を実行する3番目のMavenプロジェクトであるWarIntegrationが必要です。

  1. パッケージWar1
  2. パッケージWar2
  3. 組み込みサーバーを起動します
  4. 両方の戦争を同じ組み込みサーバーにデプロイします
  5. WarIntegrationに含まれる統合テストを実行します(War1およびWar2へのhttp呼び出しを行います)
  6. 組み込みサーバーを停止します

これは可能ですか?どのプラグインセットアップがこれを達成しますか?WarIntergrationはどのようなプロジェクト(パッケージング)である必要がありますか?War1とWar2はWarIntegrationまたは依存関係のモジュールである必要がありますか?すべての構成をWarIntegrationプロジェクトに追加できますか、それともプロジェクト全体に分散させる必要がありますか?

これはこの質問に似ていますが、プロジェクトによって開始および停止される組み込みサーバーを使用する必要があり(おそらくverifyを実行するとき)、統合テスト用に別のプロジェクトが必要です。 マルチモジュールのMaven2POMがあります。 2つのWAR、テストを実行する前に両方のWARをデプロイするように構成するにはどうすればよいですか?

4

2 に答える 2

6

cargo-maven2-plugin を使用してこれを達成できました。

興味のある人のために、ポンポンの関連部分を以下に示します...

...
<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 に答える