Sono nuovo di NUnit e sto cercando un'esplosione sul motivo per cui questo test fallisce?NUnit, CollectionAssert.AreEquivalent (..., ...), C# Domanda
Ottengo la seguente eccezione durante l'esecuzione del test.
NUnit.Framework.AssertionException: Previsto: equivalente a < < .... ExampleClass>, < .... ExampleClass>> Ma era: < < .... 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);
}
}
L'implementazione equivale solo a scopi di test può introdurre Equality Pollution: http://xunitpatterns.com/Test%20Logic%20in%20Production.html#Equality Pollution –
Ho corretto l'override di Equals e il mio test di esempio funziona. Quindi, è solo una buona pratica sovrascrivere il metodo GetHashCode() o è necessario per qualche altro motivo? Grazie! –
L'implementazione 'GetHashCode' deve essere d'accordo con' Equals': se due oggetti sono uguali, devono avere lo stesso codice hash. (Due oggetti possono avere lo stesso codice hash anche se sono diversi, ma se oggetti diversi hanno lo stesso codice hash, 'Equals' deve restituire false.) –