web-dev-qa-db-ja.com

junit-jupiter-apiとjunit-jupiter-engineの違い

Mavenモジュールjunit-jupiter-apijunit-jupiter-engineの違いは何ですか? build.gradleに両方の依存関係を含める必要がありますか?

のような両方の依存関係を記述する必要がありますか

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")

または

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")

十分ですか?

junit-vintage-engineに依存関係を追加する必要がありますか?

24
fbokovikov

バージョン5.4より前のJUnit

ドキュメント から:

junit-jupiter-api

テストと拡張機能を作成するためのJUnit Jupiter API。

junit-jupiter-engine

JUnit Jupiterテストエンジンの実装。実行時にのみ必要です。

junit-vintage-engine

新しいJUnitプラットフォームでビンテージJUnitテスト、つまりJUnit 3またはJUnit 4スタイルで作成されたテストを実行できるJUnit Vintageテストエンジンの実装。

そう ...

  • 両方が必要ですjunit-jupiter-apiおよびjunit-jupiter-engine JUnit5テストを作成して実行するには
  • 必要なのはjunit-vintage-engine if(a)JUnit5andで実行している場合(b)テストケースでJUnit4の構成/注釈/ルールなどを使用する場合

バージョン5.4以降のJUnit

JUnit 5.4では、これは簡略化されています。詳細については、 this answer を参照してください。

24
glytching

ただ、junit-jupiter-apijunit-jupiter-engine Mavenリポジトリのサブ依存関係として含まれています。したがって、両方を取得するには、junit-jupiter-engineを追加するだけで十分です。 gradleも同じだと思います。 https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1

9
Kasun

junit-jupiterアーティファクト

JUnit 5テストを記述することが目的の場合、JUnit 5.4は より簡単なMaven構成を提供します。 junit-jupiter という名前の集約アーティファクトを指定するだけです。

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.4.2</version>
    <scope>test</scope>
</dependency>

この集約アーティファクトは、便宜上、次の3つのアーティファクトを自動的にプルします。

プロジェクトでは、次のことも行われます。

  • junit-platform-commons-1.4.0.jar
  • junit-platform-engine-1.4.0.jar

上記は、新しいJupiterパラダイムに基づいてJUnit 5のテストを作成および実行するために必要なものです。

レガシーテスト

プロジェクトに引き続き実行したいJUnit 3または4テストがある場合、JUnit Vintage Enginejunit-vintage-engine に別の依存関係を追加します。 IBMの チュートリアル を参照してください。

<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.4.2</version>
    <scope>test</scope>
</dependency>
8
Basil Bourque

あなたの質問に対する最も正確な答えは junit-team/junit5-samples リポジトリにあります。 Gradleの場合は junit5-jupiter-starter-gradle を、mavenの場合は junit5-jupiter-starter-maven をご覧ください。

両方の例でわかるように、必要な依存関係はjunit-jupiter

1
hrzafer