gpt4 book ai didi

c# - NUnit:检查两个字典是否相同的 API

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:47 24 4
gpt4 key购买 nike

给定两个字典

var dictA = new Dictionary<string, classA>();
var dictB = new Dictionary<string, classA>();

如何判断这两个字典是否相同? 这里的问题 是我不能使用默认的 classA.Equals用于比较值对。相反,当且仅当给定 classA 的所有对象时,测试才会通过。字典中的类型必须满足我自己的习惯IEqualityComparer<ClassA> .

具体来说,我在看类似的东西

CollectionAssert.AreEquivalent(dictA, dictB, new ClassEqualityComparer());

ClassEqualityComparer继承自 IEqualityComparer<ClassA> , 或等效的。我不介意是否必须子类化 IEqualityComparer 的 NUnit 类型(例如 IResolveConstraint ),但最重要的是 Assert方法必须类似于

Assertion(dictA, dictB, EqualityComparer)

或者更简单的东西;我不想使用 Assert.That然后实现一种类型 IResolveConstraint进入页面只是为了检查两个词典是否相同。

有什么想法吗?

最佳答案

所以我猜你需要测试字典“B”是否包含所有与“A”相同的键,反之亦然,然后使用你的比较器来比较每个值:

Assert.IsTrue(dictA.Keys.All(k => dictB.ContainsKey(k));
Assert.IsTrue(dictB.Keys.All(k => dictA.ContainsKey(k));

var cmp = new ClassEqualityComparer();
Assert.IsTrue(dictA.Keys.All(k => cmp.Equals(dictA[k], dictB[k]));

那行得通吗?

关于c# - NUnit:检查两个字典是否相同的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175309/

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