2010-12-08 15 views
23

次のようなものです。特定のパッケージのテストをスキップするように指示する方法はありますか?

確かに私のDAOテストをスキップする方法があります。スイートを定義するオーバーヘッドを避けようとしています。

CIでは、すべてのテストを実行し、毎晩5分間の「高速」テストのみを実行するSCMのアンケートが必要です。

mvn -DskipPattern=**.dao.** test 

答えて

16

確かに、問題なし:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <excludes> 
     <!-- classes that include the name Dao --> 
     <exclude>**/*Dao*.java</exclude> 
     <!-- classes in a package whose last segment is named dao --> 
     <exclude>**/dao/*.java</exclude> 
     </excludes> 
    </configuration> 
</plugin> 

リファレンス:>Inclusions and Exclusions of Tests

  • Maven Surefire Plugin(除外がそのように、コマンドラインを介して設定することができませんあなたがしたい場合は 条件付きでこの動作を有効にするには、プロファイルを定義してコマンドラインで有効にする必要があります)

+2

6年後、surefire.excludesはまだコマンドラインで動作しません。 –

37

私はSeanの答えを広げてください。これは、あなたがpom.xmlに設定したものです:

<properties> 
    <exclude.tests>nothing-to-exclude</exclude.tests> 
</properties> 
<profiles> 
    <profile> 
    <id>fast</id> 
    <properties> 
     <exclude.tests>**/*Dao*.java</exclude.tests> 
    </properties> 
    </profile> 
</profiles> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <excludes> 
    <exclude>${exclude.tests}</exclude> 
    </excludes> 
    </configuration> 
</plugin> 

次にCIにあなたは、このようにそれらを起動します。それだ

mvn -Pfast test 

1

コマンドラインを使用してテストを除外することは可能です。除外するには!を使用します。

注:動作するには確かに2.19.1以降のバージョンが必要です。

例:

これはTestHCatLoaderEncryption

mvn install '-Dtest=!TestHCatLoaderEncryption' 

を実行しませんが、パッケージを除外する:

mvn install '-Dtest=!org.apache.hadoop.**' 

も同様に正のフィルターと組み合わせることができます。フォローインは0テストを実行します:

mvn install '-Dtest=Test*CatLoaderEncryption,!TestHCatLoaderEncryption'