1概要

この記事はhttp://joel-costigliola.github.io/assertj/[AssertJ]のJava8関連の機能に焦点を当てており、シリーズの3回目の記事です。

その主な機能についての一般的な情報を探しているのであれば、シリーズリンクの最初の記事を見てください。]。


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アサーションのみをカバーしています。高度なアサーションを使用したい場合は、モジュールを別に追加する必要があります。

最新のコアバージョンはhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22assertj-core%22[here]にあります。


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

インスタンスを作成しましょう。

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

これで、

Predicateによってどの


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

s



と同様に機能しますが、

isToday

メソッドは共有しません。


LocalDateTime

オブジェクトの例を作成しましょう。

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

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

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


3.5.

LocalTime

アサーション


LocalTime

アサーションは他の

java.util.time。**

アサーションと同様に機能しますが、それらには1つの排他的なメソッドがあります:

hasSameHourAs.


LocalTime

オブジェクトの例を作成しましょう。

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

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

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


3.6.

FlatExtracting

ヘルパーメソッド


FlatExtracting

は、

Iterable

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


_.

_


LocalDate

オブジェクトを使って単純な

List

を作成しましょう。

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

これで、この

List

に2015年の少なくとも1つの

LocalDate

オブジェクトが含まれているかどうかを簡単に確認できます。

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.

満足

ヘルパーメソッド


Satisfies

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


String

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

String givenString = "someString";

これで、ラムダ本体としてアサーションを提供できます。

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


3.8.

HasOnlyOneElementSatisfying

ヘルパーメソッド


HasOnlyOneElement

helperメソッドを使用すると、

Iterable

インスタンスに、提供されたアサーションを満たす要素が1つだけ含まれているかどうかを確認できます。



Listを作成しましょう:

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

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

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


3.9.

一致

ヘルパーメソッド


Matches

helperメソッドを使用すると、特定のオブジェクトが特定の

Predicate

関数と一致するかどうかを確認できます。

空の

Stringを取りましょう:

String emptyString = "";

これで、適切な

Predicate

lambda関数を提供して、その状態を確認できます。

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


4結論

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

すべての例とコードスニペットの実装はhttps://github.com/eugenp/tutorials/tree/master/testing-modules/testing[GitHubプロジェクト]にあります。




  • «** 前へ