使用自定义值验证地图

时间:2014-05-26 10:41:18

标签: java junit hamcrest

我有以下地图:

Map<String, MyCustomObject>

我的目标是使用 hamcrest matchers 验证此地图的容量。我尝试了以下方法:

assertThat(map, hasEntry("key", (MyCustomObject)hasItem(hasProperty("propertyName", equalTo("value")))));

但看起来hasItem方法仅适用于集合。

是否有其他方法可以验证自定义对象?

new MyCustomObject()在我的情况下不起作用,因为测试因hashcode相等而失败。而另一件事是我无法修改MyCustomObject class

2 个答案:

答案 0 :(得分:3)

你能用这个吗?

assertThat(map.get("key"), hasProperty("propertyName", equalTo("value")));

答案 1 :(得分:2)

如果要检查是否至少有一个键 - 任何键 - 与值匹配,请使用hasValue

assertThat(map, hasValue(hasProperty("propertyName", is("value"))));

区别在于不匹配输出。还有hasKeyhasEntry的匹配器。