Mavenを使用してプロジェクトをビルドしています。私は現在、テストをさまざまな階層に分割しています。
src/test/Java/**/*Test.Java
src/test-integration/Java/**/*Test.Java
src/test-external/Java/**/*Test.Java
これが私のmaven-surefire-plugin
セクション:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<includes>
<include>src/test/Java/**/*Test.Java</include>
</includes>
</configuration>
</plugin>
<include>
上記のディレクティブは機能しません。実行してもテストは実行されません:mvn clean test
私は試した **/*Test.Java
そして、ユニット、統合、外部のすべてのテストを実行します。ただし、デフォルトのテストスイートの場合は、単体テストのみを実行します。
Mavenでこれを機能させるにはどうすればよいですか?
参照:
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
ユニットと統合テストケースを分離する必要があります。単体テストはSurefireプラグインを使用して実行でき、統合テストを実行するための Failsafe という別のプラグインがあります。
Surefireプラグインは、デフォルトで、名前が*Test.Java
で終わるすべてのテストファイルを実行します。秘訣は、統合テストファイルに別の名前(*IT.Java
など)を付けることです。フェイルセーフプラグインは、それらを統合テストとして識別します。
この回答でサンプルの使用法を見つけることができます--- Maven統合テストを実行するにはどうすればよいですか
また、テストケースファイルをsrc/test/Java
フォルダーに配置し、テストファイルに*Test.Java
という名前を付けるなどのデフォルト設定に従う場合は、Surefireプラグインを個別に構成する必要はありません。
これは、<include>
パスが<testSourceDirectory>
に相対的であり、デフォルトは${project.build.testSourceDirectory}
= src/test/Javaであるためです。これを試して
<include>**/*Test.Java</include>
含めるよりも除外を使用する方が簡単でしょうか?
<excludes>
<exclude>test-integration/**/*</exclude>
<exclude>test-external/**/*</exclude>
</excludes>
またはそのようなもの?