1. ホーム
  2. java

[解決済み] Maven Integrationのテストを実行する方法

2022-04-14 10:42:03

質問

maven2 のマルチモジュール・プロジェクトで、それぞれの子モジュールに Test.javaIntegration.java をそれぞれユニットテストと統合テストに使用します。 実行すると

mvn test

すべてのJUnitテスト *Test.java が実行されます。 というのは

mvn test -Dtest=**/*Integration

どれも Integration.java のテストは子モジュールの中で実行されます。

これらは全く同じコマンドのように見えますが -Dtest= /*Integration** は動作せず、親レベルで実行されているテストが0個と表示されます。

解決方法は?

MavenのSurefireでは、単体テストと結合テストを別々に実行するように設定することができます。 標準的なユニットテストのフェーズでは、統合テストにパターンマッチしないものをすべて実行します。 その後 第二のテストフェーズを作成する 統合テストだけを実行します。

以下はその例です。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <excludes>
          <exclude>**/*IntegrationTest.java</exclude>
        </excludes>
      </configuration>
      <executions>
        <execution>
          <id>integration-test</id>
          <goals>
            <goal>test</goal>
          </goals>
          <phase>integration-test</phase>
          <configuration>
            <excludes>
              <exclude>none</exclude>
            </excludes>
            <includes>
              <include>**/*IntegrationTest.java</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>