java - 排序列表上的 AssertEquals 总是返回 false

标签 java unit-testing junit

我正在尝试编写一个单元测试来测试两个列表的排序。我所拥有的是调用自定义排序比较器,然后将原始列表与排序列表进行比较。然后我使用assertEquals来测试排序列表和原始列表是否匹配。

假设我有一个简单的模型......患者。

患者有两个字段...姓名和年龄。

List<Patient> unOrdered = new ArrayList<Patient>();
List<Patient> ordered = new ArrayList<Patient>();

我用相同的三名患者填充了这两个患者,并正确订购了订购的患者。

ordered.add(new Patient("Chris Bacon", "45"));
ordered.add(new Patient("Charles Steak", "82"));
ordered.add(new Patient("Matt Pork", "32"));

然后我填写已排序的内容,并按年龄升序排列。

unOrdered.add(new Patient("Matt Pork", "32"));
unOrdered.add(new Patient("Chris Bacon", "45"));
unOrdered.add(new Patient("Charles Steak", "82"));

然后,在我的单元测试中,我编写了一个带有自定义比较器的 Collections.sort,以按年龄升序对无序列表进行排序。我在测试期间将该列表打印到控制台(对我来说),然后...

assertEquals(ordered, unOrdered);

控制台以相同的顺序打印这些列表,但assertEquals 返回 false。我什至尝试过以相同的顺序创建两个完全相同的列表,并尝试使用assertEquals,但它仍然返回 false。

我不是 Java 专家,但根据我在网上阅读的内容和文档,assertEquals 不仅检查列表中对象的相等性,而且还检查对象的顺序。那么...为什么它总是返回 false?是assertEquals无法处理更复杂的对象还是我做错了什么?

最佳答案

要使两个列表被视为相等,一个列表中的每个元素都必须与另一个列表中的相应元素进行比较,因此此测试完全依赖于 Patient equals 方法的实现.

关于java - 排序列表上的 AssertEquals 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184063/

相关文章:

java - 在 Mac 上的 Java Swing 应用程序中使用现已弃用的 com.apple.eawt.ApplicationAdapter 有什么替代方法?

java - 对使用 httpclient 的类进行单元测试

linq - NUnit:断言IEnumerable是否包含某种类型的对象的最简洁方法是什么?

ios - 如何使用来自另一个目标的类在 XCTest 中进行测试

java - 创建和引用 stub 对象进行测试,而不需要 stub 将扩展的类

java - 在集成测试之前使用 Maven 运行 Jetty

java - java中如何在类的派生类中查找字段?

java - 如何打印与正则表达式不匹配的文件名列表? java 8

Java从日期输入获取即将到来的日期

java - 对象数组的 Easymock 匹配器