ArrayList Gleichheit JUnit Tests
Ich will das assertArrayEquals(ArrayList<Token>, ArrayList<Token>)
mit diesen Argumenten (z.B. arrayList tokens). Aber Java sagt mir, ich brauche zum erstellen einer solchen Methode. Gibt es eine Möglichkeit zu testen, für die Gleichheit von zwei arrayLists welcher Art auch immer in Junit?
Die normale
Ich glaube nicht, dass.
woops! du hast Recht 🙂
assertEquals
sollte gut funktionieren für ArrayList<Token>
.Ich glaube nicht, dass.
List.equals
Prüfungen für die element-by-element Gleichheit, und assertEquals
verwendet die equals
Methode.woops! du hast Recht 🙂
InformationsquelleAutor robinhood91 | 2013-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sagen Sie, dass Sie benötigen, um zu erstellen die Methode, weil es keine solche Methode in die JUnit-Bibliothek. Gibt es nicht so eine Methode, in der JUnit-Bibliothek, weil
assertArrayEquals
ist für den Vergleich arrays, und undArrayList
ist nicht ein array—es ist einList
.Können Sie überprüfen die Gleichheit zweier
ArrayLists
(wirklich, keine zweiList
Objekte) mit dieequals
, so dass Sie sollten in der Lage sein zu verwenden JUnit istassertEquals
Methode und es wird funktionieren just fine.asserEquals
Prüfungen überschreibenequals()
Methode?Ja, es wird mit der überschriebenen equals-Implementierung für Listen.
InformationsquelleAutor DaoWen
Was Sie wahrscheinlich wollen, um zu verwenden ist
void org.junit.Assert.assertArrayEquals(Object[] expecteds, Object[] actuals)
. Sie brauchen nur zu konvertieren Liste array mittoArray()
Methode, wie:Vergessen Sie nicht, importieren Sie diese geltend machen.
Aber dieses Verfahren funktioniert nur, wenn die Elemente in beiden Listen haben die gleiche Reihenfolge. Wenn die Reihenfolge nicht garantiert ist, dann müssen Sie Sie Sortieren die Listen mit
Collections.sort()
Methode, sondern Ihr Objekt implementieren müssenjava.util.Comparable
interface mit einer Methodeint compareTo(T o)
.PS: Die andere mögliche Lösung ist die Verwendung von assertEquals und wickeln Sie Ihre Liste zu Setzen, so:
InformationsquelleAutor edufinn
Vorstellen
myArraylist
ist eine array-Liste mit Inhalt"one", "two", "three"
Dieser gut funktioniert:
Vergessen Sie nicht, zu importieren:
import static java.util.Arrays.asList;
InformationsquelleAutor CommonSenseCode
versuchen
es funktioniert mit den Sammlungen
InformationsquelleAutor Evgeniy Dorofeev
Wenn Sie einige off-the-shelf junit-framework wie unitils etc Sie haben Methoden wie assertReflectionEquals (ähnlich anderen framework nicht), wo man zwei Objekte mit der spiegelung . Wenn Sie nicht mit jedem Dritten junit-framework , Sie können schreiben Sie Ihre eigenen ähnlichen generischen Methode
InformationsquelleAutor M Sach