5

failsafeプラグインを使用しています。

したがって、入力mvn failsafe:integration-testすると、統合テストに星印が付けられます (これは素晴らしいことです)。

でも、その時はステージでjetty serverスタートしたいです。pre-integration私は何をすべきか?

mvn verify(サイクル全体の実行が含まれるため、起動したくありませんが、mvn failsafe:integration-testそのように機能するはずです)

2 つのプラグインがあります。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>                                                              <!-- for starting jetty for integration tests -->
    <version>2.16</version>
    <executions>
        <execution>
            <id>integration-test</id>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
        <execution>
            <id>verify</id>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty.version}</version>
    <configuration>
        <!--<jettyConfig>${project.basedir}/src/main/resources/config/jetty9.xml</jettyConfig>-->
        <stopKey>STOP</stopKey>
        <stopPort>9999</stopPort>
        <stopWait>5</stopWait>
        <scanIntervalSeconds>5</scanIntervalSeconds>
        <scanTargets>
            <scanTarget>${project.basedir}/src/main</scanTarget>
            <scanTarget>${project.basedir}/src/test</scanTarget>
        </scanTargets>
        <contextXml>${project.basedir}/src/test/resources/jetty-context.xml</contextXml>
        <webAppConfig>
            <contextPath>/${project.artifactId}-${project.version}</contextPath>
        </webAppConfig>
    </configuration>

    <executions>
        <execution>
            <id>start-jetty</id>
            <phase>pre-integration-test</phase>                                                         <!-- In the pre-integration-test phase the Jetty server will be started -->
            <goals>
                <goal>run-exploded</goal>
            </goals>
            <configuration>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <daemon>true</daemon>
            </configuration>
        </execution>
        <execution>
            <id>stop-jetty</id>
            <phase>post-integration-test</phase>                                                        <!-- in the "post-integration-phase" it will be stopped -->
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
</plugin>
4

2 に答える 2

5

これは、jetty と maven-failsafe-plugin の使用マニュアルです。

Maven Failsafe プラグイン – 使用法

Jetty を統合テストのライフサイクルに統合するためのサンプル構成を提供します。

Jetty はフェーズ中に開始さpre-integration-testれ、v フェーズ中に停止しpost-integration-testます。

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.16</version>
    <executions>
      <execution>
        <id>start-jetty</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <scanIntervalSeconds>0</scanIntervalSeconds>
          <daemon>true</daemon>
        </configuration>
      </execution>
      <execution>
        <id>stop-jetty</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>stop</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

verifyただし、次のフェーズを使用することも特に推奨しています。

pre-integration-test、integration-test、または post-integration-test フェーズを直接呼び出すのではなく、verify フェーズを指定して統合テストを実行することをお勧めします。[...]

これにより、統合テスト前フェーズで統合テスト環境をセットアップし、統合テスト フェーズで統合テストを実行し、統合テスト後フェーズで統合テスト環境を完全に破棄してから最終的にチェックすることができます。統合テストの結果と、必要に応じてビルドの失敗。

于 2014-08-05T00:41:10.047 に答える
2

私は、テスト ケース内でプログラムによってその場で突堤を開始することを好みます。その主な理由は次のとおりです。

  • テストは自己完結型になり、maven 構成に依存しなくなります
  • 任意の IDE でそのままテストを実行できます
于 2014-08-06T13:05:20.037 に答える