Каков идиоматический шаблон 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 » "
25
задан polygenelubricants 12 May 2011 в 23:18
поделиться