2009-10-03 42 views

Respuesta

44

No necesita hacer nada especial para la igualdad de listas, solo use assertEquals.

ArrayList y otras listas implementan equals() comprobando que todos los objetos en las posiciones correspondientes de las listas son iguales, utilizando el método equals() de los objetos. Por lo tanto, es posible que desee verificar que los objetos de la lista implementen sean iguales.

+0

sí, me di cuenta cuando leí los documentos. –

+0

El problema con esta respuesta es que no informará el contenido de la lista en caso de error. Intente usar assertThat (a, es (b)); en lugar. La advertencia de starblue sobre la implementación de iguales todavía se cumple. Ver también [pregunta duplicada 3236880] (http://stackoverflow.com/questions/3236880/assert-list-in-junit): mejores respuestas y muestras de código allí. – Barett

+0

Actualización del futuro: esto no parece funcionar en matrices de tipos primitivos, y en cualquier caso, assertEquals (Object [], Object []) está en desuso. Use assertArrayEquals. – johncip

6

Es posible que desee comprobar la documentación para List.equals.

+0

Soy nuevo en Java gracias. –

+0

¿Significa esto que si tengo una lista tendré que anular iguales para SomeClass? –

+6

Comparará los elementos de las listas con 'Object.equals'. Por defecto, esto será cierto si son la misma instancia. Si desea permitir diferentes objetos con los mismos datos internos para que coincidan, entonces deben proporcionar 'SomeClass' con un método' equals' (y 'hashCode'). –

2

Creo que esta podría ser una respuesta un poco fácil (aunque es correcta). Probar ArrayLists para iguales implica que has pensado en la igualdad de los elementos. Si los elementos son enteros, todo está bien. Pero si son instancias de tus propias clases de dominio, entonces deberías estar al tanto de las trampas que rodean la igualdad (y la clonación). Por favor, echa un vistazo a:

http://www.artima.com/lejava/articles/equality.html

para un buen conjunto de consejos acerca de la implementación de la igualdad. En un aparte: si alguna vez necesita clonar objetos, considere el uso de constructores de copia en lugar de implementar clonables. Cloneable presenta un conjunto completo de problemas que podrías no esperar.

Cuestiones relacionadas