代码之家  ›  专栏  ›  技术社区  ›  r12 orlp

为什么测试在哈希集比较上失败,而元素的顺序似乎很重要[重复]

  •  -1
  • r12 orlp  · 技术社区  · 7 年前

    我的测试显示以下xUnit。净产量:

    [xUnit.net 00:00:07.1166826]       Expected: HashSet<License> [Comp.Licensing.Web.Model.License [5d8104ef-f707-4a40-9d68-463bf9f8b0f9], Comp.Licensing.Web.Model.License [d586fc23-bba6-474c-82a2-226484d7fb81]]
    [xUnit.net 00:00:07.1172482]       Actual:   HashSet<License> [Comp.Licensing.Web.Model.License [d586fc23-bba6-474c-82a2-226484d7fb81], Comp.Licensing.Web.Model.License [5d8104ef-f707-4a40-9d68-463bf9f8b0f9]]
    

    我不明白的是为什么这个测试失败了,似乎原因是哈希集出了问题。

    具体来说,似乎 真实的

    实际:

    HashSet<L> [Stuff [abc], Stuff [123]]
    

    HashSet<L> [Stuff [123], Stuff [abc]]
    

    在文档上 HashSet ,它说

    我的测试是否由不使用相同哈希集等式检查的程序运行?

    1 回复  |  直到 4 年前
        1
  •  2
  •   ILMTitan    7 年前

    HashSet 不覆盖 Equals ,并将使用 object.Equals ,这是引用等式。

    哈希集

    如果您正在使用 Assert.Equal

    而是使用 CollectionAssert.AreEquivalent .

    xUnit : Assert two List<T> are equal?