2016-09-20 5 views
2

У меня есть несколько вложенных списков, которые я хотел бы утверждать с помощью hamcrest. В основном это списки элементов, содержащихся в списке.Как утверждать вложенные списки с помощью hamcrest java

например.

List<List<String>> [[bed, bench, bookshelf], [book, bowl, basket], [bar, biscuit, smoked beef]]

Я хотел бы утверждать, что каждый пункт начинается с «Ъ»

hasItem кажется остановить соответствие после первого списка.

assertThat(list, hasItem(everyItem(startsWith("b"))));

Как я могу это сделать в Hamcrest?

Я также попробовал.

Спасибо ...

ответ

0

Мое шестое чувство, что вы не получите там, используя существующую matchers.

Но написание собственного матчи ... занимает всего несколько минут, как только вы поймете, как все объединяется.

Возможно, вы проведете проверку еще одного answer; где я даю полный пример того, как можно написать собственный собеседник. Тогда мне потребовалось 15 минут; хотя раньше я никогда не писал специальные шаблоны.

+0

ах спасибо очень много для оперативного реагирования. Да, я рассматривал это и/или переходил через каждый список с циклом for. Я просто подумал, что вложенных списков может быть 1 лайнер существующего совпадения. – teak

0

hasItem проверяет, есть ли по крайней мере один объект с данным условием. Ваш первый внутренний список выполняет условие, поэтому hamcrest остановится.

Как выяснилось, everyItem чеки .. каждый товар.

Решение: assertThat(list, everyItem(everyItem(startsWith("b")))); Чтобы угодить компилятор вы должны бросить List<List<String>> в Iterable<Iterable<String>> list

 Смежные вопросы

  • Нет связанных вопросов^_^