CollectionAssert.AreEqual Failing
本文关键字:Failing AreEqual CollectionAssert | 更新日期: 2023-09-27 18:31:52
我正在尝试使用 比较两个列表
CollectionAssert.AreEqual(ListExpected, ListActual);
但是我得到了一个例外
Expected and actual are both <System.Collections.Generic.List`1[API.Program.Relation]> with 11 elements
Values differ at index [0]
Expected: <API.Program.Relation>
But was: <API.Program.Relation>
但是当我逐场使用Assert.AreEqual
比较零元素时,一切都很好。
知道为什么我不能使用CollectionAssert
进行比较
如果
一个对象的Equals(object other)
方法返回true,则在.NET中"声明"等于另一个对象。您需要为 API.Program.Relation
类实现该方法,否则 .NET 认为你的对象不同,除非它们是引用相等的。所有字段都相同的事实对 .NET 无关紧要:如果需要逐字段相等语义,则需要提供支持它的Equals
实现。
当您覆盖Equals
时,不要忘记也覆盖GetHashCode
- 这些必须一起覆盖。
如果由于某种原因不想或无法重写Equals
,则可以使用采用 IComparer
实例的重载 CollectionAssert.AreEqual
来帮助比较集合元素。