web-dev-qa-db-ja.com

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

次のようなもの。

シュアファイアでダオテストをスキップする方法が欲しいのですが。スイートを定義するオーバーヘッドを回避しようとしています。

CIを使用して、すべてのテストを実行する1晩と、「高速」テストのみを実行するSCMの別の5分間のポーリングを行いたいと思います。

mvn -DskipPattern=**.dao.** test
27
Eric Winter

ショーンの答えを拡張させてください。これは、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

それでおしまい。

42
yegor256

もちろん問題ありません:

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

参照:

(除外はコマンドラインから構成できないため、この動作を条件付きでオンにする場合は、プロファイルを定義し、コマンドラインでアクティブ化する必要があります)

18

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

注:わかりませんが、動作するには2.19.1以降のバージョンのsurefireが必要になる可能性があります。

例:

これは実行されませんTestHCatLoaderEncryption

mvn install '-Dtest=!TestHCatLoaderEncryption'

パッケージを除外します。

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

これは、ポジティブフィルターと組み合わせることもできます。以下は0個のテストを実行します。

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

Maven Surefire docs を参照してください。

2