Изучите следующий фрагмент:
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"