我正在为我的 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 许可协议
使用 Assert.assertArrayEquals(Object[] expecteds, Object[] actuals) 方法比较两个数组的内容相等性:
equals
方法比较数组是否是相同的引用,因此它不适合测试用例。对于您的其他问题:请记住使用 org.junit.Assert 而不是已过时的 junit.Assert 。