web-dev-qa-db-ja.com

Mavensurefireプラグインを使用してテストを含める

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>
15
kevinarpe

ユニットと統合テストケースを分離する必要があります。単体テストはSurefireプラグインを使用して実行でき、統合テストを実行するための Failsafe という別のプラグインがあります。

Surefireプラグインは、デフォルトで、名前が*Test.Javaで終わるすべてのテストファイルを実行します。秘訣は、統合テストファイルに別の名前(*IT.Javaなど)を付けることです。フェイルセーフプラグインは、それらを統合テストとして識別します。

この回答でサンプルの使用法を見つけることができます--- Maven統合テストを実行するにはどうすればよいですか

また、テストケースファイルをsrc/test/Javaフォルダーに配置し、テストファイルに*Test.Javaという名前を付けるなどのデフォルト設定に従う場合は、Surefireプラグインを個別に構成する必要はありません。

8
msenni

これは、<include>パスが<testSourceDirectory>に相対的であり、デフォルトは${project.build.testSourceDirectory} = src/test/Javaであるためです。これを試して

<include>**/*Test.Java</include>
7

含めるよりも除外を使用する方が簡単でしょうか?

<excludes>
    <exclude>test-integration/**/*</exclude>
    <exclude>test-external/**/*</exclude>
</excludes>

またはそのようなもの?

1
EdH