4

私たちはJavaテストを実行するためにmaven-surefire-pluginを使用しています。テストは2つのに分類されますMaven 2で2つのテストスイートを切り替えるにはどうすればよいですか?

  • 高速テスト
  • スローテスト

遅いテストは半分の時間がかかるしながら、全体の「速い」スイートは、数秒で実行されます。

開発中、私は高速テストのみを実行したい。私がコミットすると、低速テストも実行できるようにしたいので、低速テストを実行することはオプションになりますが、高速テストはデフォルトにする必要があります。

CIサーバーで、私は両方を実行したいです。

スローテストに高速テストが含まれている場合は、問題ありません。

このシナリオでは、Maven、JUnit、およびSurefireをどのように設定する必要がありますか?

答えて

1

を、私は(私は*Test.javaと名付けた)単位にテストを分け、と統合(*IT.java)、私はテストを実行するために使用された、それぞれ、SurefireとFailsafeのプラグインポリシーに従っています。もちろん、IT部門はUTよりもはるかに低速です。

これは、簡単なコマンドでテストのグループランニングのパワー与える:UTのためのmvn testとのUTとその両方のためのmvn integration-testだけでなく、mvn install -DskipITsでのみITはをスキップの可能性について。

環境に関する問題(つまり、データベースの起動に時間がかかりすぎる、メッセージブローカーが早すぎてシャットダウンする、またはメッセージが遅すぎるなど)が原因でユニットテストよりも頻繁に障害が発生するため、等々)。デフォルトでは、「検証」目標を明示的に指定しない限り、フェイルセーフテストの失敗はビルドを強制終了しません。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
     </execution> 
     <!-- Uncomment this in order to fail the build if any integration test fail --> 
     <!-- execution> <id>verify</id> <goals><goal>verify</goal></goals> </execution --> 
    </executions> 
</plugin> 
3

あなたはJUnitのからカテゴリを使用する必要があります。Junit category

まずソリューションを

設定maven-surefire-pluginバージョンの構成では、少なくとも2.11

 <profile> 
        <id>normal</id> 
        <activation> 
          <activeByDefault>true</activeByDefault> 
        </activation> 
        <build> 
          <plugins> 
            <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-surefire-plugin</artifactId> 
              <configuration> 
                <excludedGroups>com.test.SlowTests</excludedGroups> 
              </configuration> 
            </plugin> 
          </plugins> 
        </build> 
      </profile> 

第二の溶液

sectiあなただけのクラス(デフォルト設定)をサポートするファイルで正規表現を追加することができます上:私は自分で一から作った商用プロジェクトで

  <configuration> 
       <includes> 
        <include>**/*Test*.java</include> 
        <include>**/*Test.java</include> 
        <include>**/*TestCase.java</include> 
       </includes> 
      </configuration> 
関連する問題