【发布时间】:2015-07-25 00:42:19
【问题描述】:
假设我有一张地图:
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("foo1","foo1");
map1.put("foo2", Arrays.asList("foo2","bar2"));
现在我想使用 Hamcrest 匹配器来验证地图的值。如果这是一个 Map 我会做类似的事情:
assertThat(map1, hasEntry("foo1", "foo1"));
但是,在尝试将其与 Map 一起使用时,我遇到了困难,其中 Map 中的条目可能是字符串或值列表。这适用于第一个条目:
assertThat(map1, hasEntry("foo1", (Object)"foo1"));
对于第二个条目,我不知道如何设置匹配器。
编辑:
我也试过了,但它会产生编译器警告。
assertThat(
map1,
hasEntry(
"foo2",
contains(hasProperty("name", is("foo2")),
hasProperty("name", is("bar2")))));
“Assert类型中的方法assertThat(T, Matcher)不适用于参数(Map, Matcher>>>)”
(以上是这里的解决方案:Hamcrest compare collections)
【问题讨论】:
-
你使用什么版本的 Java?
-
JDK 1.7 版
标签: java unit-testing junit hamcrest