如何在单元测试中断言字典

时间:2013-07-11 11:14:10

标签: c# unit-testing collections dictionary

你知道我怎么能断言两个类型

的词典
Dictionary<string,List<string>>

在我的单元测试项目中?

我尝试使用CollectionsAssert,但它并没有为我工作。我想这需要简单的字典作为参数(例如Dictionary<string,string>)。我想我的问题来自字典的第二个参数。你知道我怎么能断言这两个词典吗?

2 个答案:

答案 0 :(得分:10)

使用Linq:

Dictionary.All(e => AnotherDictionary.Contains(e))

答案 1 :(得分:8)

可以为您提供良好错误消息的方法之一:

public string ToAssertableString(IDictionary<string,List<string>> dictionary) {
    var pairStrings = dictionary.OrderBy(p => p.Key)
                                .Select(p => p.Key + ": " + string.Join(", ", p.Value));
    return string.Join("; ", pairStrings);
}

// ...
Assert.AreEqual(ToAssertableString(dictionary1), ToAssertableString(dictionary2));