Ich bin neu bei NUnit und suche nach einer Erklärung, warum dieser Test fehlschlägt?NUnit, CollectionAssert.AreEquivalent (..., ...), C# -Frage
Ich bekomme die folgende Ausnahme beim Ausführen des Tests.
NUnit.Framework.AssertionException: Erwartet: entspricht < < .... ExampleClass>, < .... ExampleClass>> Aber war: < < .... ExampleClass>, < ... .ExampleClass>>
using NUnit.Framework;
using System.Collections.ObjectModel;
public class ExampleClass
{
public ExampleClass()
{
Price = 0m;
}
public string Description { get; set; }
public string SKU { get; set; }
public decimal Price { get; set; }
public int Qty { get; set; }
}
[TestFixture]
public class ExampleClassTests
{
[Test]
public void ExampleTest()
{
var collection1 = new Collection<ExampleClass>
{
new ExampleClass
{Qty = 1, SKU = "971114FT031M"},
new ExampleClass
{Qty = 1, SKU = "971114FT249LV"}
};
var collection2 = new Collection<ExampleClass>
{
new ExampleClass
{Qty = 1, SKU = "971114FT031M"},
new ExampleClass
{Qty = 1, SKU = "971114FT249LV"}
};
CollectionAssert.AreEquivalent(collection1, collection2);
}
}
Die Implementierung von Equals ausschließlich für Testzwecke kann Gleichheit Pollution einführen: http://xunitpatterns.com/Test%20Logic%20in%20Production.html#Equality Pollution –
Ich habe die Equals override behoben und mein Beispieltest funktioniert. Also, ist es einfach eine gute Methode, die GetHashCode() Methode zu überschreiben oder ist es aus einem anderen Grund notwendig? Vielen Dank! –
Die 'GetHashCode'-Implementierung muss mit' Equals 'übereinstimmen: Wenn zwei Objekte gleich sind, müssen sie denselben Hash-Code haben. (Zwei Objekte können denselben Hash-Code haben, auch wenn sie unterschiedlich sind, aber wenn verschiedene Objekte denselben Hash-Code haben, muss "Equals" den Wert false zurückgeben.) –