Diciamo che ho una mappa:Utilizzando hamcrest per abbinare mappa contiene le voci di diversi tipi
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("foo1","foo1");
map1.put("foo2", Arrays.asList("foo2","bar2"));
Ora mi piacerebbe usare Hamcrest matchers per verificare i valori della mappa. Se questa fosse una stringa Mappa <, String> vorrei fare qualcosa di simile a questo:
assertThat(map1, hasEntry("foo1", "foo1"));
Tuttavia, mi sono bloccato quando si cerca di utilizzare questo con la mappa in cui le voci della mappa potrebbe essere una stringa o un Elenco di valori. Funziona per la prima voce:
assertThat(map1, hasEntry("foo1", (Object)"foo1"));
Per la seconda voce non riesco a capire come impostare i Matcher.
EDIT:
Ho provato anche questo, ma produce un avviso del compilatore.
assertThat(
map1,
hasEntry(
"foo2",
contains(hasProperty("name", is("foo2")),
hasProperty("name", is("bar2")))));
"Il metodo assertThat (T, Matcher) nel tipo asserzione non è applicabile per gli argomenti (Mappa, Matcher >>>)"
(Quello qui sopra è la soluzione qui: Hamcrest compare collections)
Quale versione di Java usi? – medvedev1088
versione 1.7 del JDK – acvcu