2010-07-25 55 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));