次のスニペットを調べます。
assertThat(
Arrays.asList("1x", "2x", "3x", "4z"),
not(hasItem(not(endsWith("x"))))
);
これは、リストに「x」で終わらない要素がないことを表明します。もちろん、これは、リストのすべての要素が「x」で終わることを示す二重否定の方法です。
スニペットがスローすることにも注意してください。
java.lang.AssertionError:
Expected: not a collection containing not a string ending with "x"
got: <[1x, 2x, 3x, 4z]>
これは、「x」で終わらない要素だけではなく、リスト全体をリストします。
だから、慣用的な方法があります:
- 各要素が「x」で終わることを主張する (二重否定なし)
- アサーション エラーの場合、「x」で終わらない要素のみを一覧表示する