JUnit 4-Sets zu vergleichen
Wie würden Sie kurz und bündig behaupten die Gleichheit der Collection
Elemente, insbesondere eine Set
in JUnit 4?
- überprüfen Sie dies ALSO post stackoverflow.com/questions/1086691/collectionassert-in-junit
- Sind Sie versuchen zu behaupten, dass die beiden Sätze sind einander gleich (die gleichen Elemente enthalten), oder dass zwei Elemente den gleichen Satz gleich sind?
- Ich muss sehen, dass die Elemente von zwei Mengen sind gleich,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie behaupten, dass die beiden
Set
s sind gleich eine andere, die unter Berufung auf dieSet
dieequals()
Methode.Diese
@Test
wird passieren, wenn die beidenSet
s die gleiche Größe und die gleichen Elemente enthalten.equals
undhashCode
in der Klasse implementiert sind, dass Sie die Speicherung in Ihrem Hashtable?Apache commons erneut zu Hilfe.
Funktioniert wie ein Charme. Ich weiß nicht warum, aber ich fand, dass mit Sammlungen die folgenden
assertEquals(coll1, coll2)
funktioniert nicht immer. In dem Fall, wo es nicht für mich ich hatte zwei Sammlungen unterstützt durch Setzt. Weder hamcrest noch junit würde sagen, die Sammlungen waren gleich, obwohl ich ja wusste, dass Sie waren. Mit CollectionUtils es funktioniert perfekt.mit hamcrest:
mit plain behaupten:
NB:t die equals () - Methode der Beton Klasse verwendet wird
Ein besonders interessanter Fall ist, wenn Sie vergleichen
und
So weit, die einzige Lösung, die ich sehe, ist eine Veränderung sowohl in sets
Oder ich könnte Sie vergleichen mit den Elementen.
Als eine zusätzliche Methode, die array-basierte ... kann man sich überlegen, unsortierte array Behauptungen in junitx . Obwohl der Apache CollectionUtils Beispiel funktioniert, gibt es eine pacakge von festen Behauptung Erweiterungen gibt es auch :
Ich denke, dass die
Ansatz ist sehr viel besser lesbar und debug-Version einer für Sie (alle Sammlungen unterstützen toArray(), so ist es sollte leicht genug, um die ArrayAssert Methoden.
Natürlich der Nachteil hier ist, dass, junitx ist eine zusätzliche jar-Datei oder maven-Eintrag...
Überprüfen dieser Artikel. Ein Beispiel von dort:
Verwendung Von Hamcrest:
Dies funktioniert auch, wenn die sets haben unterschiedliche Datentypen, und Berichte über den Unterschied, statt nur scheitern.
Wenn Sie möchten, um zu überprüfen, ob eine Liste oder ein Set enthält eine Reihe von spezifischen Werten (anstelle der Vergleich mit einer bereits bestehenden Sammlung), oft wird die toString-Methode von collections ist praktisch:
Dieser ist ein wenig kürzer als der erste Bau der erwarteten Sammlung und vergleicht Sie mit der aktuellen Kollektion, und einfacher zu schreiben und zu korrigieren.
(Zugegeben, das ist nicht eine besonders saubere Methode, und kann nicht unterscheiden, ein element "foo, bar" von zwei Elementen "foo" und "bar". Aber in der Praxis ich denke, es ist sehr wichtig, dass es einfach und schnell tests schreiben, sonst viele Entwickler einfach nicht, ohne eine Taste gedrückt wird.)
Mag ich die Lösung von Hans-Peter Störr... Aber ich denke, es ist nicht ganz korrekt. Leider
containsInAnyOrder
nicht akzeptierenCollection
von objetcs zu vergleichen. So hat es einCollection
vonMatcher
s:Den import sind: