2010-07-25 57 views
24

我有两个列表,我想检查两个列表是否相同(顺序不重要),并且它是否相同取决于我实现的IEqualityComparer实例。CollectionAssert.AreEquivalent with Custom IEqualityComparer

理想的情况是我可以使用CollectionAssert.AreEquivalent自定义IEqualityComparer。不过看起来CollectionAssert.AreEquivalent不包含任何IEqualityComparer

有关如何以简洁和可重用的方式来做到这一点的任何想法?

回答

28

CollectionAssert.AreEquivalent实现为:

Assert.That(actual, new CollectionEquivalentConstraint(expected), message, args); 

你可以写你的断言方式提供自定义IEqualityComparerUsing

Assert.That(actual, 
    new CollectionEquivalentConstraint(expected).Using(customComparer)); 

您也可以缩短new CollectionEquivalentConstraintIs.EquivalentTo

Assert.That(actual, Is.EquivalentTo(expected).Using(customComparer));