比较 JUnit 中的两个对象列表

SRI*_*RAN 8 java 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
Run Code Online (Sandbox Code Playgroud)

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

Zby*_*000 7

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

Assert.assertArrayEquals(expected.toArray(), actuals.toArray());
Run Code Online (Sandbox Code Playgroud)

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

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