1. 概要

この記事では、JUnitの@Testアノテーションについて簡単に説明します。 この注釈は、ユニットテストと回帰テストを実行するための強力なツールを提供します。

2. Maven構成

最新バージョンのJUnit5を使用するには、次のMaven依存関係を追加する必要があります。

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.8.1</version>
    <scope>test</scope>
</dependency>

Mavenにこの依存関係を最終ビルドに含めたくないため、testスコープを使用します。

surefireプラグインはまだJUnit5をネイティブに完全にはサポートしていないため、プロバイダーも追加する必要があります。これにより、Mavenにテストの場所を指示します。

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>
</plugin>

この構成では、surefire 2.19.1を使用します。これは、執筆時点では、バージョン2.20.xがjunit-platform-surefire-providerと互換性がないためです。

3. テスト中のメソッド

まず、テストシナリオで@Testアノテーションの機能を紹介するために使用する簡単なメソッドを作成しましょう。

public boolean isNumberEven(Integer number) {
    return number % 2 == 0;
}

このメソッドは、渡された引数が偶数の場合は true を返し、それ以外の場合はfalseを返す必要があります。 それでは、想定どおりに機能するかどうかを確認しましょう。

4. メソッドのテスト

この例では、2つのシナリオを具体的に確認します。

  • 偶数が与えられた場合、メソッドはtrueを返す必要があります
  • 奇数が与えられた場合、メソッドはfalseを返す必要があります

これは、実装コードがさまざまなパラメーターを使用して isNumberEven メソッドを呼び出し、結果が期待どおりであることを確認することを意味します。

テストがそのように認識されるように、@ Testアノテーションを追加します。クラスには必要な数だけ含めることができますが、関連するもの。 また、テストはプライベートであってはならず、値を返すこともできません。そうでない場合は無視されます。

これらの考慮事項を考慮して、テストメソッドを記述しましょう。

@Test
void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() {
    boolean result = bean.isNumberEven(8);

    Assertions.assertTrue(result);
}

@Test
void givenOddNumber_whenCheckingIsNumberEven_thenFalse() {
    boolean result = bean.isNumberEven(3);

    Assertions.assertFalse(result);
}

ここでMavenビルドを実行すると、surefireプラグインはsrc/ test / javaの下に配置されたクラスのすべての注釈付きメソッドを通過し、それらを実行します。テストが失敗するとビルドが失敗します[X212X ]。

JUnit4から来た場合このバージョンでは、注釈はパラメータを受け入れないことに注意してください。 タイムアウトまたはスローされた例外をチェックするには、代わりにアサーションを使用します。

@Test
void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis() {
    Assertions.assertTimeout(Duration.ofMillis(10), () -> bean.isNumberEven(3));
}
	
@Test
void givenNull_whenCheckingIsNumberEven_thenNullPointerException() {
    Assertions.assertThrows(NullPointerException.class, () -> bean.isNumberEven(null));
}

5. 結論

このクイックチュートリアルでは、@Testアノテーションを使用して簡単なJUnitテストを実装および実行する方法を示しました。

JUnitフレームワークの詳細については、一般的な紹介を提供するこの投稿を参照してください。

例で使用されているすべてのコードは、GitHubプロジェクトで入手できます。