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?
3 Answers
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.
4 Comments
ArrayList.You might want to check the documentation for List.equals.
2 Comments
Object.equals. By default this will be true if they are the same instance. If you want to allows different objects with the same internal data to match, then they should provide SomeClass with an equals (and hashCode) method.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.