NUnit:字典断言

问题描述 投票:0回答:4

我想要一个在 NUnit 中的 oneliner,它可以断言两个字典是否相同。即,我想要以下代码的简洁版本:

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]);
    }
}

当然不是那么难,但我找不到参考资料,有什么想法吗?

c# dictionary nunit
4个回答
41
投票

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


3
投票

尝试使用 CollectionAssert.AreEqual or CollecitonAssert.AreEquivalent

两者都会比较集合的项目(而不是集合的参考),但是如之前所讨论的,区别在于项目在集合中的顺序:

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

0
投票

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

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


0
投票

最新版本的 NUnit 直接支持

Assert.AreEqual(dict2, dict1);

尽情享受吧。

© www.soinside.com 2019 - 2024. All rights reserved.