同じフォルダー (src/test/java) に統合テストと単体テストの両方を含むマルチモジュール Maven プロジェクトがあります。統合テストは でマークされてい@Category(IntegrationTest.class)
ます。私は次の設定で終わりたいです:
- を実行する
mvn install
と、すべてのテストをコンパイルしたいのですが、何も実行したくありません。 - を実行する
mvn test
と、すべてのテストがコンパイルされますが、単体テストのみが実行されます。 - を実行
mvn integration-test
すると、すべてのテストをコンパイルして実行したいと思います。
重要な点は、pom.xml
追加のコマンドライン引数なしでこれを構成することです。
現在、親の pom.xml で次の設定を思いつきました。唯一の問題は、すべてのテストが実行される #1 です。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${project.java.version}</source>
<target>${project.java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>cz.cuni.xrg.intlib.commons.IntegrationTest</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
<configuration>
<groups>cz.cuni.xrg.intlib.commons.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
すべての子モジュールの pom.xml には、親 pom から継承する必要があると思われる次のプラグイン構成があります。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
</plugins>
</build>
を使用してみ<skipTests>true</skipTests>
ましたが、すべての目標に対してテストの実行が無効になり、これは私が望むものではありません (#2 と #3 に違反しています)。mvn test
オプションを尊重するのも非常に奇妙skipTests=true
です...そもそもなぜそれを実行したいのですか??
mvn install
グーグルで何時間もかけてさまざまな組み合わせを試してみた結果、 でテストを実行すると同時に、 でテストを実行することさえ可能かどうか迷っていますmvn test
。誰かがこれが間違っていることを証明してくれることを願っています。;)
mvn install
単体テストのみを実行するソリューションも喜んで受け入れますが、大きな違いはないと思います。