web-dev-qa-db-ja.com

Maven FailsafeプラグインでJUnit 5統合テストを実行するにはどうすればよいですか?

Maven Failsafeプラグインは、mvn clean failsafe:integration-testコマンドを実行しているときにJUnit 5統合テストを検出しませんが、ファイルは検出できます。

テストの依存関係としてjunit-jupiter-apijunit-jupiter-engineがあります。

<properties>
    <junit.jupiter.version>5.0.1</junit.jupiter.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

私の統合テストは正しく名前が付けられています(**/*IT.Java**/IT*.Java、または**/*ITCase.Javaに続いて、Failsafeによってデフォルトで含まれ、Surefireによってデフォルトで除外されています)。

FailsafeでJUnit 5テストを使用する方法はありますか?

12

JUnit 5のドキュメント から:junit-platform-surefire-providerはもう使用しないでください。

Surefire 2.22.0のリリースにより、JUnitチームのjunit-platform-surefire-providerは非推奨になり、JUnitプラットフォームの次のリリースで廃止されます。

さらに、 maven-surefire-pluginのドキュメント でも読むことができます。

JUnit 5プラットフォームの使用

JUnitプラットフォームを使い始めるには、プロジェクトに少なくとも1つのTestEngine実装を追加する必要があります。たとえば、Jupiterでテストを作成する場合は、テストアーティファクトjunit-jupiter-engineをPOMの依存関係に追加します

したがって、このtest依存関係を指定する必要があります。

<properties>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
</properties> 

<dependencies>
     [...]
     <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <version>${junit-jupiter.version}</version>
         <scope>test</scope>
     </dependency>
     [...] 
</dependencies>

そしてmaven-failsafe-plugin宣言は次のように単純である可能性があります:

<build>
    <plugins>           
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>  
6
davidxxx

編集:この答えはmaven-failsafe-plugin:2.22.0の前は正解でした。理想的で最新のソリューションについては、 davidxxxの回答 を参照してください。


maven-failsafe-pluginは現在、そのまま JUnit 5をサポートしていません です。

ただし、 maven-surefire-pluginと同様 の場合、maven-failsafe-pluginの依存関係を以前のバージョンのorg.junit.platform:junit-platform-surefire-provider:1.0.1で指定することにより、maven-failsafe-plugin:2.19.1でJUnit 5テストを実行できます。

OutOfMemory error が原因で、フェールセーフの現在のバージョン2.20では(surefireにエラーがあるのと同じ方法で)動作しません。

プラグインの構成例については、以下を参照してください。

<properties>
    <junit.platform.version>1.0.1</junit.platform.version>
</properties>

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>${junit.platform.version}</version>
        </dependency>
    </dependencies>
</plugin>

GitHubで この動作の完全な例(および失敗した例) を見つけることができます。これが機能することをテストするには、mvn clean failsafe:integration-testを実行します。

14