我如何断言两个具有 Javabean 值的 HashMap 相等?

新手上路,请多包涵

我有两个 HashMap<Integer, Question> 我想比较的地图。 Question 在这种情况下是我编写的 Javabean。

我如何断言 HashMap 是相等的?在这种情况下,相等意味着 HashMap 包含完全相同的 Question bean?

如果它完全相关,我正在使用 JUnit 编写单元测试。

原文由 Ayrx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 466
2 个回答

这是我最终使用的解决方案,它非常适合单元测试目的。

 for(Map.Entry<Integer, Question> entry : questionMap.entrySet()) {
    assertReflectionEquals(entry.getValue(), expectedQuestionMap.get(entry.getKey()), ReflectionComparatorMode.LENIENT_ORDER);
}

这涉及调用 assertReflectionEquals()unitils 包。

 <dependency>
    <groupId>org.unitils</groupId>
    <artifactId>unitils-core</artifactId>
    <version>3.3</version>
    <scope>test</scope>
</dependency>

原文由 Ayrx 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 Guava,您可以:

 assertTrue(Maps.difference(expected, actual).areEqual());

原文由 Ariel T 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题