【问题标题】:CollectionAssert.AreEquivalent with Custom IEqualityComparerCollectionAssert.AreEquivalent 与自定义 IEqualityComparer
【发布时间】:2011-03-20 16:05:26
【问题描述】:
我有两个列表,我想检查两个列表是否相同(顺序不重要),是否相同取决于我实现的IEqualityComparer实例。
理想的情况是我可以使用CollectionAssert.AreEquivalent 和自定义IEqualityComparer。但是,CollectionAssert.AreEquivalent 似乎没有接收任何IEqualityComparer。
知道如何以简洁和可重用的方式做到这一点吗?
【问题讨论】:
标签:
c#
unit-testing
nunit
【解决方案1】:
CollectionAssert.AreEquivalent 实现为:
Assert.That(actual, new CollectionEquivalentConstraint(expected), message, args);
你可以用这种方式写出你的断言,并提供一个自定义的IEqualityComparer 和Using:
Assert.That(actual,
new CollectionEquivalentConstraint(expected).Using(customComparer));
您也可以将new CollectionEquivalentConstraint 缩短为Is.EquivalentTo:
Assert.That(actual, Is.EquivalentTo(expected).Using(customComparer));