GradleでのJUnit5の使用

1。概要

このチュートリアルでは、Gradleビルドツールを使用して、新しいJUnit5プラットフォームでテストを実行します。

古いバージョンと新しいバージョンの両方をサポートするプロジェクトを構成します。

新しいバージョンの詳細については、A Guide to JUnit5をお読みください。または、ビルドツールの詳細については、Gradleの概要をご覧ください。

2.Gradleのセットアップ

まず、バージョン4.6以降のビルドツールがインストールされているかどうかを確認します。これは、バージョン4.6以降がJUnit5で動作する最も古いバージョンであるためです。

最も簡単な方法は、gradle-vコマンドを実行することです。

$> gradle -v ------------------------------------------------------------ Gradle 4.10.2 ------------------------------------------------------------

また、必要に応じて、インストール手順に従って適切なバージョンを取得できます。

すべてをインストールしたら、build.gradleファイルを使用してGradleを構成する必要があります。

ビルドツールに単体テストプラットフォームを提供することから始めることができます。

test { useJUnitPlatform() } 

プラットフォームを指定したので、JUnitの依存関係を指定する必要があります。ここで、JUnit5と以前のバージョンの間に注目すべき違いが見られます。

以前のバージョンでは、1つの依存関係のみが必要でした。ただし、JUnit 5では、APIはランタイムから分離されているため、2つの依存関係があります。

APIはjunit-jupiter-apiで明示されます。ランタイムは、JUnit 5の場合はjunit-jupiter-engineであり、JUnit3または4の場合はjunit-vintage-engineです。

これら2つをそれぞれtestImplementationtimeRuntimeOnlyで提供します。

dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' }

3.テストの作成

最初のテストを書いてみましょう。以前のバージョンと同じように見えます。

@Test public void testAdd() { assertEquals(42, Integer.sum(19, 23)); }

これでgradle cleantestコマンドを実行してテストを実行できます

JUnit 5を使用していることを確認するために、インポートを確認できます。@TestassertEqualsのインポートには、org.junit.jupiter.apiで始まるパッケージが必要です。

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals;

したがって、最後の例では、何年も機能している「古い」機能を使用してテストを作成しました。次に、JUnit5の新機能のいくつかを使用する別の例を作成します。

@Test public void testDivide() { assertThrows(ArithmeticException.class, () -> { Integer.divideUnsigned(42, 0); }); }

assertThrowsは、JUnit5の新しいアサーションであり、古いスタイルの@Test(expected = ArithmeticException.class)を置き換えます。

4.Gradleを使用したJUnit5テストの構成

次に、GradleとJUnit5のより深い統合について説明します。

スイートに2種類のテストがあるとしましょう。長期実行と短期実行です。JUnit 5 @ Tagアノテーションを使用できます。

public class CalculatorJUnit5Test { @Tag("slow") @Test public void testAddMaxInteger() { assertEquals(2147483646, Integer.sum(2147183646, 300000)); } @Tag("fast") @Test public void testDivide() { assertThrows(ArithmeticException.class, () -> { Integer.divideUnsigned(42, 0); }); } }

次に、ビルドツールに実行するものを指示します。この例では、短期間の(高速)テストを実行してみましょう。

test { useJUnitPlatform { includeTags 'fast' excludeTags 'slow' } }

5.古いバージョンのサポートを有効にする

現在でも、新しいJupiterエンジンを使用してJUnit3および4のテストを作成することができます。さらに、たとえば移行シナリオでは、同じプロジェクトでそれらを新しいバージョンと組み合わせることができます。

まず、既存のビルド構成にいくつかの依存関係を追加します。

testCompileOnly 'junit:junit:4.12' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.3.1'

プロジェクトにjunit-jupiter-enginejunit-vintage-engineの両方が含まれていることに注意してください

ここで、新しいクラスを作成し、前に作成したtestDivideメソッドをコピーして貼り付けます。その後、我々はを輸入追加@TestのassertEqualsを。ただし、今回は、どのorg.junitから始まる古いバージョン4パッケージを使用するようにします

import static org.junit.Assert.assertEquals; import org.junit.Test; public class CalculatorJUnit4Test { @Test public void testAdd() { assertEquals(42, Integer.sum(19, 23)); } }

6.結論

このチュートリアルでは、GradleをJUnit 5と統合しました。さらに、バージョン3と4のサポートも追加しました。

ビルドツールが新旧バージョンの優れたサポートを提供することを確認しました。したがって、既存のすべてのテストを変更することなく、既存のプロジェクトで新しい機能を使用できます。

完全なコード例は、GitHubプロジェクトで入手できます。あなた自身のプロジェクトの出発点としてそれを自由に使ってください。