2009-10-03 10 views

Odpowiedz

44

Nie musisz robić nic specjalnego dla równości list, wystarczy użyć assertEquals.

ArrayList i inne listy implementują equals() sprawdzając, czy wszystkie obiekty w odpowiednich pozycjach list są równe, używając metody equals() obiektów. Więc możesz chcieć sprawdzić, czy obiekty w liście narzędzi są poprawne.

+0

Tak, zauważyłem, kiedy czytałem dokumenty. –

+0

Problem z tą odpowiedzią polega na tym, że nie zgłosi ona zawartości listy w przypadku niepowodzenia. Spróbuj użyć assertThat (a, is (b)); zamiast. Ostrzeżenie Starblue dotyczące wdrażania równań nadal obowiązuje. Zobacz także [duplikat pytania 3236880] (http://stackoverflow.com/questions/3236880/assert-list-in-jitit): lepsze odpowiedzi i próbki kodu. – Barett

+0

Aktualizacja z przyszłości: nie wydaje się działać na tablicach typów pierwotnych, aw obu przypadkach assertEquals (Object [], Object []) jest przestarzałe. Użyj assertArrayEquals. – johncip

6

Może zajść potrzeba sprawdzenia dokumentacji dla List.equals.

+0

Jestem nowy w Jawie dzięki. –

+0

Czy to oznacza, że ​​jeśli mam listę , będę musiał zastąpić równe dla SomeClass? –

+6

Porówna elementy elementów z 'Object.equals'. Domyślnie będzie to prawdą, jeśli są to te same instancje. Jeśli chcesz, aby różne obiekty z tymi samymi wewnętrznymi danymi pasowały do ​​siebie, to powinny dostarczyć 'SomeClass'' '' '' i 'hashCode'). –

2

Myślę, że to może być nieco zbyt łatwa odpowiedź (choć jest prawidłowa). Testowanie ArrayLists dla equals oznacza, że ​​pomyślałeś o równości elementów. Jeśli elementy są liczbami całkowitymi, wszystko jest w porządku. Ale jeśli są instancjami twoich własnych klas domen, powinieneś być świadomy pułapek otaczających równość (i klonowanie). Proszę sprawdzić:

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

na dobry zestaw wskazówek na temat wdrażania równości. Odkładając na bok: jeśli kiedykolwiek będziesz potrzebował klonować obiekty, zastanów się nad użyciem konstruktorów kopiowania zamiast implementować możliwość klonowania. Cloneable wprowadza cały zestaw problemów, których możesz nie oczekiwać.

Powiązane problemy