我想在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]);
}
}
当然不是那么困难,但我找不到参考,任何想法?
答案 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,不同之处在于项目在集合中的顺序: