is
とequalTo
マッチャーライブラリを組み合わせることができます。assertステートメントは長く見えますが、エラーメッセージの方が優れています。は最初に失敗するためcontains
、最初の不一致が見つかると壊れ、リストのさらに下の失敗は見つかりません。is
とequalTo
は、すべての不一致が表示されるリスト全体を印刷します。
使用例contains
List<String> list = Arrays.asList("foo", "bar", "boo");
assertThat(list, contains("foo", "boo", "bar"));
次のエラーメッセージが表示されます。
Expected: iterable containing ["foo", "boo", "bar"]
but: item 1: was "bar"
使用例is and equalTo
List<String> list = Arrays.asList("foo", "bar", "boo");
assertThat(list, is(equalTo(Lists.newArrayList("foo", "boo", "bar"))));
次のエラーメッセージが表示されます。
Expected: is <[foo, boo, bar]>
but: was <[foo, bar, boo]>
2番目の方法では、不一致がどこにあるかをインデックスで確認できませんが、失敗メッセージを1回だけ確認することでテストを修正できるため、これはさらに優れています。一方、方法1では、最初にインデックス1を修正し、テストを実行し、インデックス2で不一致を検出して、最終的な修正を行います。