【发布时间】:2009-10-03 03:11:17
【问题描述】:
使用 JUnit 比较 ArrayList 是否相等的简单方法是什么?我需要实现相等接口吗?或者有没有简单的 JUnit 方法让它变得更简单?
【问题讨论】:
-
Assert List in Junit的可能重复
使用 JUnit 比较 ArrayList 是否相等的简单方法是什么?我需要实现相等接口吗?或者有没有简单的 JUnit 方法让它变得更简单?
【问题讨论】:
你不需要为列表相等做任何特别的事情,只需使用 assertEquals。
ArrayList 和其他列表通过使用对象的 equals() 方法检查列表对应位置的所有对象是否相等来实现 equals()。因此,您可能需要检查列表中的对象是否正确实现。
【讨论】:
ArrayList。
您可能需要查看List.equals 的文档。
【讨论】:
Object.equals进行比较。默认情况下,如果它们是同一个实例,这将是真的。如果要允许具有相同内部数据的不同对象进行匹配,那么它们应该为SomeClass 提供equals(和hashCode)方法。
我认为这可能是一个过于简单的答案(尽管它是正确的)。测试 ArrayLists 是否相等意味着您已经考虑到元素的相等性。如果元素是整数,那一切都很好。但是,如果它们是您自己的域类的实例,那么您应该意识到围绕相等(和克隆)的陷阱。请查看:
http://www.artima.com/lejava/articles/equality.html
关于实现平等的一组很好的提示。顺便说一句:如果您需要克隆对象,请考虑使用复制构造函数而不是实现可克隆。 Cloneable 引入了一整套您可能没想到的问题。
【讨论】: