gpt4 book ai didi

c# - CollectionAssert.AreEqual 失败

转载 作者:太空狗 更新时间:2023-10-29 18:25:27 24 4
gpt4 key购买 nike

我正在尝试使用

比较两个列表
 CollectionAssert.AreEqual(ListExpected, ListActual);

但是我得到了一个异常(exception)

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

最佳答案

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

当您覆盖 Equals 时,不要忘记同时覆盖 GetHashCode - 它们必须一起覆盖。

如果出于某种原因你不想或不能覆盖 Equals,你可以使用 an overload of CollectionAssert.AreEqual它采用 IComparer 的实例来帮助比较集合元素。

关于c# - CollectionAssert.AreEqual 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com