断言可迭代的每个元素都与给定的匹配器匹配的惯用 Hamcrest 模式是什么?
检查以下代码段:
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”结尾的元素