Ayr*_*yrx 7 java comparison hashmap
我有两张HashMap<Integer, Question>我想比较的地图.Question在这种情况下,我写的是Javabean.
我怎么断言两者HashMap是平等的?在这种情况下,相等意味着两者都HashMap包含完全相同的Questionbean?
如果它完全相关,我正在使用JUnit编写单元测试.
Thi*_*ilo 12
如果你的 Question 类实现了,equals那么你可以这样做
assertEquals(expectedMap, hashMap);
assertTrue(expectedMap.equals(hashMap));
Run Code Online (Sandbox Code Playgroud)
Map 接口指定如果两个 Map 包含相同键的相同元素,则它们相等。
Ari*_*l T 11
使用Guava你可以做到:
assertTrue(Maps.difference(expected, actual).areEqual());
Run Code Online (Sandbox Code Playgroud)
这是我最终使用的解决方案,它完美地用于单元测试目的.
for(Map.Entry<Integer, Question> entry : questionMap.entrySet()) {
assertReflectionEquals(entry.getValue(), expectedQuestionMap.get(entry.getKey()), ReflectionComparatorMode.LENIENT_ORDER);
}
Run Code Online (Sandbox Code Playgroud)
这涉及assertReflectionEquals()从unitils包调用.
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-core</artifactId>
<version>3.3</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)