Java >> Java チュートリアル >  >> Tag >> assert

AssertJ の Java 8 機能

この記事はシリーズの一部です:• AssertJ の紹介
• Guava の AssertJ
• AssertJ の Java 8 機能 (現在の記事)• AssertJ によるカスタム アサーション

1.概要

この記事は、AssertJ の Java8 関連の機能に焦点を当てたシリーズの 3 回目の記事です。

その主な機能に関する一般的な情報を探している場合は、AssertJ の紹介シリーズの最初の記事を参照してから、AssertJ for Guava を参照してください。

2. Maven の依存関係

Java 8 のサポートは、バージョン 3.5.1 以降、メインの AssertJ Core モジュールに含まれています。モジュールを使用するには、pom.xml に次のセクションを含める必要があります。 ファイル:

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.5.1</version>
    <scope>test</scope>
</dependency>

この依存関係は、基本的な Java アサーションのみを対象としています。高度なアサーションを使用する場合は、モジュールを別途追加する必要があります。

最新のコア バージョンはここにあります。

3. Java 8 の機能

AssertJ は、Java 8 型に特別なヘルパー メソッドと新しいアサーションを提供することで、Java 8 の機能を活用します。

3.1. オプション アサーション

シンプルな Optional を作成しましょう インスタンス:

Optional<String> givenOptional = Optional.of("something");

Optional かどうかを簡単に確認できるようになりました いくつかの値が含まれており、その値が何であるか:

assertThat(givenOptional)
  .isPresent()
  .hasValue("something");

3.2. 述語 アサーション

簡単な Predicate を作成しましょう String の長さをチェックすることによるインスタンス :

Predicate<String> predicate = s -> s.length() > 4;

どの String かを簡単に確認できるようになりました 述語によって拒否または受け入れられます:

assertThat(predicate)
  .accepts("aaaaa", "bbbbb")
  .rejects("a", "b")
  .acceptsAll(asList("aaaaa", "bbbbb"))
  .rejectsAll(asList("a", "b"));

3.3. LocalDate アサーション

2 つの LocalDate を定義することから始めましょう オブジェクト:

LocalDate givenLocalDate = LocalDate.of(2016, 7, 8);
LocalDate todayDate = LocalDate.now();

特定の日付が特定の日付の前後または今日であるかどうかを簡単に確認できるようになりました:

assertThat(givenLocalDate)
  .isBefore(LocalDate.of(2020, 7, 8))
  .isAfterOrEqualTo(LocalDate.of(1989, 7, 8));

assertThat(todayDate)
  .isAfter(LocalDate.of(1989, 7, 8))
  .isToday();

3.4. LocalDateTime アサーション

LocalDateTime アサーションは LocalDate と同様に機能します 様 isToday は共有しないでください メソッド。

例を作成しましょう LocalDateTime オブジェクト:

LocalDateTime givenLocalDate = LocalDateTime.of(2016, 7, 8, 12, 0);

そして今、あなたはチェックすることができます:

assertThat(givenLocalDate)
  .isBefore(LocalDateTime.of(2020, 7, 8, 11, 2));

3.5. 現地時間 アサーション

現地時間 アサーションは他の java.util.time.*と同様に機能します ただし、hasSameHourAs. という 1 つの排他的なメソッドがあります。

例を作成しましょう LocalTime オブジェクト:

LocalTime givenLocalTime = LocalTime.of(12, 15);

そして今、あなたは主張することができます:

assertThat(givenLocalTime)
  .isAfter(LocalTime.of(1, 0))
  .hasSameHourAs(LocalTime.of(12, 0));

3.6. フラット抽出 ヘルパー メソッド

FlatExtracting Iterable からプロパティを抽出するために Java 8 のラムダを利用する特別なユーティリティ メソッドです。 要素.

簡単な List を作成しましょう LocalDate を使用 オブジェクト:

List<LocalDate> givenList = asList(ofYearDay(2016, 5), ofYearDay(2015, 6));

これで、この List かどうかを簡単に確認できます 少なくとも 1 つの LocalDate を含む 2015 年のオブジェクト:

assertThat(givenList)
  .flatExtracting(LocalDate::getYear)
  .contains(2015);

flatExtracting メソッドはフィールド抽出に限定されません。いつでも任意の機能を提供できます:

assertThat(givenList)
  .flatExtracting(LocalDate::isLeapYear)
  .contains(true);

または:

assertThat(givenList)
  .flatExtracting(Object::getClass)
  .contains(LocalDate.class);

一度に複数のプロパティを抽出することもできます:

assertThat(givenList)
  .flatExtracting(LocalDate::getYear, LocalDate::getDayOfMonth)
  .contains(2015, 6);

3.7. 満足 ヘルパー メソッド

満足 メソッドを使用すると、オブジェクトが提供されたすべてのアサーションを満たしているかどうかをすばやく確認できます。

例の String を作成しましょう インスタンス:

String givenString = "someString";

アサーションをラムダ本体として提供できるようになりました:

assertThat(givenString)
  .satisfies(s -> {
    assertThat(s).isNotEmpty();
    assertThat(s).hasSize(10);
  });

3.8. HasOnlyOneElementSatisfying ヘルパー メソッド

HasOnlyOneElement ヘルパー メソッドを使用すると、Iterable かどうかを確認できます インスタンスには、提供されたアサーションを満たす要素が 1 つだけ含まれています。

リストの例を作成しましょう:

List<String> givenList = Arrays.asList("");

そして今、あなたは主張することができます:

assertThat(givenList)
  .hasOnlyOneElementSatisfying(s -> assertThat(s).isEmpty());

3.9. マッチ ヘルパー メソッド

マッチ ヘルパー メソッドを使用すると、特定のオブジェクトが特定の Predicate と一致するかどうかを確認できます 関数。

空の文字列を取りましょう:

String emptyString = "";

これで、適切な Predicate を提供することで状態を確認できます ラムダ関数:

assertThat(emptyString)
  .matches(String::isEmpty);

4.結論

AssertJ シリーズの最後の記事では、AssertJ Java 8 のすべての高度な機能を調べて、シリーズを締めくくりました。

すべての例とコード スニペットの実装は、GitHub プロジェクトにあります。

次の » AssertJ によるカスタム アサーション« 前GuavaのAssertJ
Java タグ