Чтобы определить, равны ли 2 коллекции, NUnit должен в конечном итоге сравнить значения в коллекции. В этом случае значения имеют тип ExampleClass
, который является class
. Он не реализует никакого теста на равенство (такого как переопределение Equals и GetHashCode), поэтому в конечном итоге NUnit выполнит эталонное сравнение. Это не удастся, так как каждая коллекция содержит разные экземпляры Example
, даже если поля имеют одинаковые значения.
Вы можете исправить это, добавив следующее к ExampleClass
public override bool Equals(object o) {
var other = o as ExampleClass;
if ( other == null ) { return false; }
return this.Description == other.Description
&& this.SKU == other.SKU
&& this.Price == other.Price
&& this.Qty == other.Qty;
}
public override int GetHashCode() { return 1; }
Примечание: я выбрал значение 1 для GetHashCode
, потому что это изменяемый тип, и единственное действительно безопасное возвращаемое значение для GetHashCode для изменяемого типа - это константа. Если вы намереваетесь использовать это как ключ в Dictionary<TKey,TValue>
, хотя вы захотите вернуться к этому.