我试图比较两个列表使用
CollectionAssert.AreEqual(ListExpected, ListActual);
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外
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>
Run Code Online (Sandbox Code Playgroud)
但是当我Assert.AreEqual逐场比较零元素时,一切都很好.
知道为什么我无法比较使用 CollectionAssert
das*_*ght 11
如果一个对象的Equals(object other)方法返回true,则"声明"该对象等于.NET中的另一个对象.您需要为您的API.Program.Relation类实现该方法,否则.NET会将您的对象视为不同,除非它们是引用相等的.所有字段都相同的事实与.NET无关:如果您需要逐字段相等语义,则需要提供Equals支持它的实现.
当你覆盖时Equals,不要忘记覆盖GetHashCode- 这些必须一起覆盖.
如果Equals由于某种原因不想或不能覆盖,则可以使用带有实例的重载CollectionAssert.AreEqualIComparer来帮助比较集合元素.