In einem jUnit-Test möchte ich einige Zeilen aus der Datenbank basierend auf der Spalte name
abrufen. Ich möchte dann testen, dass die Zeilen die Namen haben, die ich erwartet habe. Ich habe folgendes:
Ich erhalte derzeit diesen Fehler:
java.lang.AssertionError: expected: com.google.common.collect.Collections2 $ TransformedCollection & lt; [Audiogeräte, Möbel] & gt; aber war: com.google.common.collect.Collections2 $ TransformedCollection & lt; [Audiogeräte, Möbel] & gt;
Also, was ist der sauberste und prägnanteste Weg, um zu testen, dass ich Zeilen von der Datenbank zurückbekomme, deren name
-Spalte mit den Namen übereinstimmt, die ich wollte? Ich könnte eine for
-Schleife durchlaufen lassen und überprüfen, dass jeder Name in der einen Liste in der anderen existiert, aber ich hatte gehofft, genauer zu sein. Etwas wie der folgende Pseudocode wäre nett:
Sie können containsAll()
zweimal verwenden, um zu überprüfen, ob Sie einen fehlenden Wert oder einen unerwarteten Wert haben.
Wenn Sie sich jedoch dafür entscheiden, List
oder Set
anstelle von Collection
zu verwenden, geben Sie an, dass ein List
einem anderen List
entspricht (gleich für Set
) iff enthält beide die gleichen Werte .
Vergleicht das angegebene Objekt mit dieser Liste auf Gleichheit. Gibt
true
zurück, wenn das angegebene Objekt auch eine Liste ist, beide Listen dieselbe Größe haben und alle entsprechenden Elementpaare in den beiden Listen gleich sind. (Zwei Elemente e1 und e2 sind gleich, wenn(e1==null ? e2==null : e1.equals(e2))
.) Mit anderen Worten, zwei Listen werden als gleich definiert, wenn sie dieselben Elemente in derselben Reihenfolge enthalten. Diese Definition stellt sicher, dass die equals-Methode verwendet wird funktioniert ordnungsgemäß über verschiedene Implementierungen derList
-Schnittstelle.
Ressourcen:
Wenn Sie erwarten, dass sie dieselben Elemente enthalten, aber nicht unbedingt in derselben Reihenfolge, dann führen Sie einfach eine ImmutableSet
-Kopie von beiden aus und prüfen Sie, ob diese Mengen gleich sind. Wenn Sie erwarten, dass sie die gleiche Reihenfolge haben, dann kopieren Sie ImmutableList
und prüfen Sie, ob diese gleich sind.
Collection
hat überhaupt keine Vorstellung von Gleichheit.
Guava hat eine Methode, die das Konzept, das Sie versuchen zu verstehen, gut kommuniziert: symmetrischeDifferenz . Wenn die symmetricDifference leer ist, sind die Mengen gleich.
%Vor%Es ist jedoch nicht das "billigste", da es eine Vereinigungs-, Schnittpunkt- und Differenzoperation durchführt. Sie können auch prüfen, ob die Gruppen die gleiche Größe haben. Ist dies nicht der Fall, enthalten sie nicht die gleichen Elemente. Wenn dies der Fall ist, können Sie überprüfen, ob die Gruppe (asymmetrisch) Differenz ist leer.
%Vor%