比较 JUnit 中的两个对象列表

新手上路,请多包涵

我正在为我的 java 项目编写 JUnit 测试用例,并使用 Coverage Tool 检查代码行是否被覆盖。问题是:我有两个对象列表。我需要使用 assertTrue 或任何其他可能的断言语句来比较对象的结果是否相等。通过使用以下断言语句,我收到类似断言错误的错误。是否有任何解决方案可以轻松比较两个列表?

 //actual
List<ProjectData> actuals = ProjectManagerDao.getProjects("x", "y", "z");
// expected
List<ProjectData> expecteds = new ArrayList<>();
ProjectData p1 = new ProjectData();
p1.setId("a");
p1.setName("b");
expecteds.add(p1);

assertTrue(JsonProvider.getGson().toJson(actuals).equalsIgnoreCase(JsonProvider.getGson().toJson(expecteds)));
//or
assertTrue(actuals.equalIgnoreCase(expeteds);//Not working for list of objects but working for comparing two strings

这与 Java 比较两个列表 的不同之处在于我需要能够在 jUnit 中断言相等性,而不仅仅是比较列表。

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

阅读 510
1 个回答

使用 Assert.assertArrayEquals(Object[] expecteds, Object[] actuals) 方法比较两个数组的内容相等性:

 Assert.assertArrayEquals(expected.toArray(), actuals.toArray());

equals 方法比较数组是否是相同的引用,因此它不适合测试用例。

对于您的其他问题:请记住使用 org.junit.Assert 而不是已过时的 junit.Assert 。

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

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