使用 JUnit 比较 ArrayList 是否相等的简单方法?
使用 JUnit 比较 ArrayList 是否相等的简单方法是什么?我需要实现相等接口吗?或者有一个简单的 JUnit 方法可以使它更容易吗?
What is an easy way to compare ArrayLists for equality using JUnit? Do I need to implement the equality interface? Or is there a simple JUnit method that makes it easier?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于列表相等性,您无需执行任何特殊操作,只需使用assertEquals即可。
ArrayList 和其他列表通过使用对象的 equals() 方法检查列表相应位置中的所有对象是否相等来实现 equals()。因此,您可能需要检查列表中的对象是否正确实现 equals。
You need to do nothing special for list equality, just use assertEquals.
ArrayList and other lists implement equals() by checking that all objects in the corresponding positions of the lists are equal, using the equals() method of the objects. So you might want to check that the objects in the list implement equals correctly.
您可能需要查看
List.equals
的文档。You might want to check the documentation for
List.equals
.我认为这可能是一个有点太简单的答案(尽管它是正确的)。测试 ArrayList 的 equals 意味着您已经考虑了元素的相等性。如果元素是整数那就没问题了。但是,如果它们是您自己的域类的实例,那么您应该意识到围绕平等(和克隆)的陷阱。请查看:
http://www.artima.com/lejava/articles/equality。 html
获取一组关于实现平等的好技巧。另一方面:如果您需要克隆对象,请考虑使用复制构造函数而不是实现可克隆。 Cloneable 引入了一系列您可能意想不到的问题。
I think this might be a slightly too easy answer (although it is correct). Testing ArrayLists for equals implies you have given thought to equality of the elements. If the elements are Integers that is all fine. But if they are instances of your own domain classes, then you should be made aware of the pitfalls surrounding equality (and cloning). Please check out:
http://www.artima.com/lejava/articles/equality.html
for a good set of tips about implementing equality. On an aside: If you ever need to clone objects, consider the use of copy constructors instead of implementing cloneable. Cloneable introduces a whole set of problems you might not expect.