2016-05-19 7 views
-2

MSTest CollectionAssert Klasse bietet und auf der Grundlage dieser Frage, die ich zurück Wörterbuch bin im Vergleich entspricht meinen Erwartungen: .NET Dictionaries have same keys and values, but aren't "equal"-Test zwei Wörterbücher enthalten die gleichen Elemente

aber dann habe ich mein Wörterbuch in einer anderen Reihenfolge der zurückgegebenen Version absichtlich bevölkert aber mit den exakt gleichen Elementen ... jetzt CollectionAssert.AreEqual versagt, wenn ich rufe:

CollectionAssert.AreEqual((ICollection)expected, (ICollection)ret)

Dies scheint nicht einen sehr guten Gleichheitstest - muß ich meine eigenen oder rolle etwas aus der MSTest bieten b Ochse?

Antwort

2

In derselben Klasse gibt es eine andere Methode namens AreEquivalent();

Dies gibt Ihnen eine wahr zurück, wenn die beiden ICollection-Objekte, die Sie als Parameter senden, die gleichen Elemente mit dem gleichen Betrag haben. In diesem Fall spielt die Reihenfolge keine Rolle. Dies ist der größte Unterschied zwischen AreEqual() und AreEquivalent().

Unten finden Sie die offizielle Erklärung von der MSDN-Seite.

"Überprüft, ob die angegebenen Auflistungen äquivalent sind. Zwei Auflistungen sind äquivalent, wenn sie dieselben Elemente in derselben Menge enthalten, aber in beliebiger Reihenfolge. Elemente sind gleich, wenn ihre Werte gleich sind, nicht wenn sie sich auf dasselbe Objekt beziehen . "

Und Ihr Aufruf an die Funktion wäre dasselbe wie bei AreEqual(), siehe unten;

CollectionAssert.AreEquivalent((ICollection)expected, (ICollection)ret) 
2

können Sie AreEquivalent verwenden:

CollectionAssert.AreEquivalent((ICollection)expected, (ICollection)ret) 

Diese Methode Test, wenn die Sammlungen die gleichen Elemente in der gleichen Menge, aber in beliebiger Reihenfolge.