1概要

この記事はhttp://joel-costigliola.github.io/assertj/[AssertJ]Guava関連の主張に焦点を当てており、AssertJシリーズの2番目の記事です。 AssertJに関する一般的な情報を知りたい場合は、シリーズリンクの最初の記事を参照してください。/Introduction-to-assertj[Introduction to AssertJ]。


2 Mavenの依存関係

GusertでAssertJを使用するには、__pom.xmlに次の依存関係を追加する必要があります。

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-guava</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22assertj-guava%22[here]です。

また、バージョン3.0.0以降、

AssertJ Guava



Java 8

および

AssertJ Core 3.x

に依存しています。

** 3グアバの主張


AssertJ

には、Guava型(

ByteSource



Multimap



Optional



Range



RangeMap

、および

Table

)のカスタムアサーションがあります。


3.1.

ByteSource

アサーション

空の一時ファイルを2つ作成することから始めましょう。

File temp1 = File.createTempFile("bael", "dung1");
File temp2 = File.createTempFile("bael", "dung2");

そしてそれらから

ByteSource

インスタンスを作成します。

ByteSource byteSource1 = Files.asByteSource(temp1);
ByteSource byteSource2 = Files.asByteSource(temp2);

これで、次の主張を書くことができます。

assertThat(buteSource1)
  .hasSize(0)
  .hasSameContentAs(byteSource2);


3.2.

Multimap



アサーション


__Multimap


は、特定のキーに複数の値を関連付けることができるマップです。

Multimap

アサーションは、通常の

Map__実装とほぼ同様に機能します。


Multimap

インスタンスを作成し、いくつかのエントリを追加することから始めましょう。

Multimap<Integer, String> mmap = Multimaps
  .newMultimap(new HashMap<>(), Sets::newHashSet);
mmap.put(1, "one");
mmap.put(1, "1");

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

assertThat(mmap)
  .hasSize(2)
  .containsKeys(1)
  .contains(entry(1, "one"))
  .contains(entry(1, "1"));

2つの追加のアサーションもあります – それらの間には微妙な違いがあります


  • containsAllEntriesOf


  • hasSameEntriesAs.

これら2つの主張を見てみましょう。いくつかのマップを定義することから始めます。

Multimap<Integer, String> mmap1 = ArrayListMultimap.create();
mmap1.put(1, "one");
mmap1.put(1, "1");
mmap1.put(2, "two");
mmap1.put(2, "2");

Multimap<Integer, String> mmap1__clone = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap1__clone.put(1, "one");
mmap1__clone.put(1, "1");
mmap1__clone.put(2, "two");
mmap1__clone.put(2, "2");

Multimap<Integer, String> mmap2 = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap2.put(1, "one");
mmap2.put(1, "1");

ご覧のとおり、

mmap1



mmap1

clone

はまったく同じエントリを含みますが、2つの異なる

Map

型の2つの異なるオブジェクトです。

Map mmap2__には、すべてのマップで共有される単一のエントリが含まれています。今、次の主張が当てはまります。

assertThat(mmap1)
  .containsAllEntriesOf(mmap2)
  .containsAllEntriesOf(mmap1__clone)
  .hasSameEntriesAs(mmap1__clone);


3.3.

オプション



アサーション

Guavaの

Optional

のアサーションには、値の存在確認と内部の値を抽出するためのユーティリティが含まれます。


Optional

インスタンスを作成することから始めましょう:

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

そして今度は私達は価値の存在を確認し、

Optional

の内容を主張することができます:

assertThat(something)
  .isPresent()
  .extractingValue()
  .isEqualTo("something");


3.4.

Range



アサーション

Guavaの

Range

クラスのアサーションには、

Range

の下限と上限、または特定の値が特定の範囲内にあるかどうかを確認することが含まれます。

次のようにして、簡単な範囲の文字を定義しましょう。

Range<String> range = Range.openClosed("a", "g");

そして今、我々はテストすることができます。

assertThat(range)
  .hasOpenedLowerBound()
  .isNotEmpty()
  .hasClosedUpperBound()
  .contains("b");


3.5.

Table



アサーション

AssertJのテーブル固有のアサーションにより、行数と列数、およびセル値の有無を確認できます。

簡単な

Table

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

Table<Integer, String, String> table = HashBasedTable.create(2, 2);
table.put(1, "A", "PRESENT");
table.put(1, "B", "ABSENT");

そして今、我々は以下のチェックを実行することができます:

assertThat(table)
  .hasRowCount(1)
  .containsValues("ABSENT")
  .containsCell(1, "B", "ABSENT");


4結論

AssertJシリーズのこの記事では、Guava関連のすべての機能について説明しました。

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




  • «** 前へ