Скажем, у меня есть карта:
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("foo1","foo1");
map1.put("foo2", Arrays.asList("foo2","bar2"));
Теперь я хотел бы использовать сопоставители Hamcrest для проверки значений карты. Если бы это была Map‹ String,String >, я бы сделал что-то похожее на это:
assertThat(map1, hasEntry("foo1", "foo1"));
Однако я застрял, пытаясь использовать это с картой, где записи на карте могут быть строкой или списком значений. Это работает для первой записи:
assertThat(map1, hasEntry("foo1", (Object)"foo1"));
Для второй записи я не могу понять, как настроить Matchers.
РЕДАКТИРОВАТЬ:
Я также пробовал это, но компилятор выдает предупреждение.
assertThat(
map1,
hasEntry(
"foo2",
contains(hasProperty("name", is("foo2")),
hasProperty("name", is("bar2")))));
"Метод assertThat(T, Matcher) в типе Assert неприменим для аргументов (Map, Matcher >>>)"
(Выше было решение здесь: Hamcrest сравнить коллекции)