2013-12-19 10 views
11

私はMavenを使ってプロジェクトをビルドしています。 I現在、異なる階層に分割テスト:Mavenのsurefireプラグインを使ってテストを組み込む

  • ユニットテスト - >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> 

上記の指令は機能しません。実行するとテストは実行されません:mvn clean test

私は**/*Test.javaを試しましたが、それはユニット、統合、外部のすべてのテストを実行します。しかし、デフォルトのテストスイートでは、単体テストを実行したいだけです。

この作業をMavenで行うにはどうすればよいですか?

参考:

<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.14.1</version> 

答えて

1

除外ではなく、インクルードを使用する方が簡単でしょうか?

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

そういう意味ですか?

8

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

Surefireプラグインはデフォルトで、名前が*Test.javaで終わるすべてのテストファイルを実行します。このトリックは、統合テストファイルの名前を別の名前(例:*IT.java)にすることです。 Failsafeプラグインは、それらを統合テストとして識別します。

あなたがこの回答に使用例を見つけることができます - How do I get my Maven Integration tests to run

をまたあなたがsrc/test/javaフォルダにテストケースファイルを置くように、デフォルトの設定に従うと*Test.javaとしてテストファイルに名前を付ける場合は、別途シュアプラグインを設定するために持っていけません。

5

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

<include>**/*Test.java</include> 
+0

これは受け入れられる回答です – Andrejs

関連する問題