我想要一个在 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]);
}
}
当然不是那么难,但我找不到参考资料,有什么想法吗?
看看CollectionAssert.AreEquivalent。这将断言两个字典具有相同的内容,但不一定是相同的实例。
尝试使用 CollectionAssert.AreEqual or CollecitonAssert.AreEquivalent。
两者都会比较集合的项目(而不是集合的参考),但是如之前所讨论的,区别在于项目在集合中的顺序:
您可以使用名为 Should 的库编写与框架无关的断言。它还具有非常好的流畅语法,如果您喜欢流畅的界面,可以使用它。我有一篇与此相关的博客文章。
http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html
最新版本的 NUnit 直接支持
Assert.AreEqual(dict2, dict1);
。
尽情享受吧。