NUnit:字典断言

时间:2009-10-30 10:59:49

标签: c# dictionary nunit

我想在NUnit中使用 one liner 来断言两个字典是否相同。即,我想要以下代码的简洁版本:

public static void DictionaryAssert<T, U>(Dictionary<T, U> dictionaryResult, Dictionary<T, U> expectedResult)
{
    Assert.AreEqual(dictionaryResult.Count, expectedResult.Count);
    foreach (var aKey in expectedResult.Keys)
    {
        Assert.AreEqual(expectedResult[aKey], dictionaryResult[aKey]);
    }
}

当然不是那么困难,但我找不到参考,任何想法?

3 个答案:

答案 0 :(得分:33)

看看CollectionAssert.AreEquivalent。这将声明两个词典具有相同的内容,但不一定是相同的实例。

答案 1 :(得分:0)

您可以使用名为Should的库编写框架无关的断言。它还有一个非常好的流利语法,如果你喜欢流畅的界面,可以使用它。我有一篇与之相关的博客文章。

http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html

答案 2 :(得分:0)

尝试使用CollectionAssert.AreEqual CollecitonAssert.AreEquivalent

两者都将比较集合的项目(而不是集合的引用),但是as discussed before,不同之处在于项目在集合中的顺序:

  • AreEqual-集合必须具有相同的计数,并以相同的顺序包含完全相同的项目。
  • AreEquivalent-集合必须包含相同的项目,但匹配项可以按任何顺序进行。