Tôi mới sử dụng NUnit và đang tìm kiếm giải thích tại sao thử nghiệm này không thành công?NUnit, CollectionAssert.AreEquivalent (..., ...), C# Câu hỏi
Tôi nhận được ngoại lệ sau khi chạy thử nghiệm.
NUnit.Framework.AssertionException: dự kiến: tương đương với < < .... ExampleClass>, < .... ExampleClass>> Nhưng là: < < .... 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);
}
}
Triển khai Chỉ bằng với mục đích thử nghiệm có thể giới thiệu ô nhiễm bình đẳng: http://xunitpatterns.com/Test%20Logic%20in%20Production.html#Equality Pollution –
Tôi đã cố định ghi đè Bằng và thử nghiệm mẫu của tôi hoạt động. Vì vậy, nó chỉ là thực hành tốt để ghi đè lên GetHashCode() phương pháp hoặc là nó cần thiết cho một số lý do khác? Cảm ơn! –
Việc triển khai 'GetHashCode' cần đồng ý với' Equals': nếu hai đối tượng giống nhau, chúng phải có cùng mã băm. (Hai đối tượng có thể có cùng mã băm ngay cả khi chúng khác nhau, nhưng nếu các đối tượng khác nhau có cùng mã băm, 'Equals' phải trả về false.) –