1. 概要

オプションオブジェクトを返すメソッドをテストする場合、オプションに値があるかどうかをチェックするか、その中の値をチェックするアサーションを作成する必要がある場合があります。

この短いチュートリアルでは、 JUnitAssertJの両方の関数を使用してこれらのアサーションを作成する方法を見ていきます。

2. オプションが空かどうかをテストする

オプションのに値があるかどうかを確認するだけでよい場合は、isPresentまたはisEmptyでアサートできます。

2.1. テストオプションには値があります

オプションに値がある場合、オプション.isPresentでアサートできます。

assertTrue(optional.isPresent());

ただし、AssertJライブラリは、これをより流暢に表現する方法を提供します。

assertThat(optional).isNotEmpty();

2.2. オプションのテストは空です

JUnitを使用すると、ロジックを逆にすることができます。

assertFalse(optional.isPresent());

また、Java 11以降では、Optional.isEmptyを使用できます。

assertTrue(optional.isEmpty());

ただし、AssertJは私たちにもきちんとした代替手段を提供します。

assertThat(optional).isEmpty();

3. オプションの値のテスト

多くの場合、存在または不在だけでなく、オプションの内の値をテストする必要があります。

3.1. JUnitアサーションの使用

Optional.get を使用して値を提供し、そのにアサーションを書き込むことができます。

Optional<String> optional = Optional.of("SOMEVALUE");
assertEquals("SOMEVALUE", optional.get());

ただし、 得る 例外が発生する可能性があり、テストの失敗を理解するのが難しくなります。 したがって、値が最初に存在するかどうかを主張することをお勧めします。

assertTrue(optional.isPresent());
assertEquals("SOMEVALUE", optional.get());

ただし、オプションはequalsメソッドをサポートしているため、一般的な平等アサーションの一部として、正しい値を含むオプションを使用できます。

Optional<String> expected = Optional.of("SOMEVALUE");
Optional<String> actual = Optional.of("SOMEVALUE");
assertEquals(expected, actual);

3.2. AssertJを使用する

AssertJ を使用すると、hasValueの流暢なアサーションを使用できます。

assertThat(Optional.of("SOMEVALUE")).hasValue("SOMEVALUE");

4. 結論

この記事では、オプションをテストするいくつかの方法について説明しました。

ビルトインがどのように JUnit アサーションはisPresentおよびgetで使用できます。 また、Optional.equalsがアサーション内のOptionalオブジェクトを比較する方法を提供する方法も確認しました。

最後に、AssertJアサーションを確認しました。これにより、オプションの値を確認するための流暢な言葉が得られます。 

いつものように、この記事で紹介するコードは、GitHubから入手できます。