CollectionAssert.AreEqual Fehlgeschlagen

8

Ich versuche, zwei Listen mit

zu vergleichen %Vor%

Aber ich bekomme eine Ausnahme

%Vor%

Aber als ich das Nullelement mit Assert.AreEqual auf Feld für Feld verglichen habe, war alles in Ordnung.

Irgendeine Idee, warum ich nicht mit CollectionAssert

vergleichen kann     
Night Walker 20.04.2012, 18:32
quelle

1 Antwort

11

Ein Objekt ist in .NET "deklariert", das einem anderen Objekt entspricht, wenn die Methode Equals(object other) true zurückgibt. Sie müssen diese Methode für Ihre API.Program.Relation -Klasse implementieren, ansonsten berücksichtigt .NET Ihre Objekte als unterschiedlich, es sei denn, sie sind referenzgleich. Die Tatsache, dass alle Felder gleich sind, spielt für .NET keine Rolle: Wenn Sie Semantik für Feld-für-Feld-Gleichheit benötigen, müssen Sie eine Implementierung von Equals bereitstellen, die dies unterstützt.

Wenn Sie Equals überschreiben, vergessen Sie nicht, auch GetHashCode zu überschreiben - diese müssen zusammen überschrieben werden.

Wenn Sie Equals aus irgendeinem Grund nicht überschreiben möchten oder können, können Sie eine Überladung von CollectionAssert.AreEqual , die eine Instanz von IComparer benötigt, um beim Vergleich von Auflistungselementen zu helfen.

    
dasblinkenlight 20.04.2012, 18:49
quelle

Tags und Links