Maven Failsafeプラグインは、mvn clean failsafe:integration-test
コマンドを実行しているときにJUnit 5統合テストを検出しませんが、ファイルは検出できます。
テストの依存関係としてjunit-jupiter-api
とjunit-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テストを使用する方法はありますか?
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>
編集:この答えは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
を実行します。