1概要
この記事では、JUnitの @ Test アノテーションについて簡単に説明します。この注釈は、単体テストと回帰テストを実行するための強力なツールを提供します。
2 Mavenの設定
latestバージョンを使用するJUnit 5の場合 、Mavenの次の依存関係を追加する必要があります。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.1.0</version>
<scope>test</scope>
</dependency>
Mavenがこの依存関係を最終ビルドに含めないようにするため、 test スコープを使用します。
surefireプラグインはまだJUnit 5を完全にはサポートしていないので、 https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.junit.platform%22も必要になります。 %20AND%20a%3A%22junit-platform-surefire-provider%22[プロバイダを追加する] 、これにより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>
この記事の執筆時点では、バージョン2.20.xは junit-platform-surefire-provider ** と互換性がないため、この設定ではsurefire 2.19.1を使用します。
3テスト中のメソッド
まず最初に、テストシナリオで使用する簡単な方法を作成して、 @ Test アノテーションの機能を紹介しましょう。
public boolean isNumberEven(Integer number) {
return number % 2 == 0;
}
このメソッドは、渡された引数が偶数の場合は true を返し、それ以外の場合は false を返します。それでは、それが想定したとおりに機能するかどうかを確認しましょう。
4メソッドをテストする
この例では、2つのシナリオを具体的に確認します。
-
偶数が与えられると、メソッドは true を返すべきです
-
奇数が与えられると、メソッドは false を返さなければなりません
これは、実装コードがさまざまなパラメータを使用して isNumberEven メソッドを呼び出し、結果が期待どおりであることを確認することを意味します。
-
テストがそのように認識されるようにするには、 @ Test アノテーションを追加します。 クラス内に必要な数だけこれらを含めることができますが、関連するものだけをまとめることをお勧めします。また、 テストは privateであったり、 値を返してはいけません** それ以外の場合は無視されます。
これらを考慮して、テストメソッドを書きましょう。
@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 の下に置かれたクラスのすべてのアノテーション付きメソッドを通過してそれらを実行します 。
もしあなたがJUnit 4から来たのであれば、このバージョンではアノテーションはいかなるパラメータも受け付けないことに注意してください。** タイムアウトやスローされた例外をチェックするには、代わりにアサーションを使用します。
@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フレームワークについての詳細は この投稿 にあります。これは一般的な紹介を提供します。
例で使用されているすべてのコードはhttps://github.com/eugenp/tutorials/tree/master/testing-modules/junit-5[GitHubプロジェクト]にあります。