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进行比较

CollectionAssert.AreEqual Failing

如果

一个对象的Equals(object other)方法返回true,则在.NET中"声明"等于另一个对象。您需要为 API.Program.Relation 类实现该方法,否则 .NET 认为你的对象不同,除非它们是引用相等的。所有字段都相同的事实对 .NET 无关紧要:如果需要逐字段相等语义,则需要提供支持它的Equals实现。

当您覆盖Equals时,不要忘记也覆盖GetHashCode - 这些必须一起覆盖。

如果由于某种原因不想或无法重写Equals,则可以使用采用 IComparer 实例的重载 CollectionAssert.AreEqual 来帮助比较集合元素。