2009-10-30 24 views
17

我想要一個一個班輪,在NUnit,斷言兩個字典是否相同。即我想要下面的代碼的簡潔版本:NUnit:Dictionary Assert

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

當然,它不是那麼難,但我找不到參考,任何想法?

回答

25

看看CollectionAssert.AreEquivalent。這將聲明兩個字典具有相同的內容,但不一定是相同的實例。

+2

我以爲他們只是爲IEnumerable?根據我的測試,字典似乎不起作用。 – Graviton 2009-10-30 11:19:07

+0

Dictionary 實現IEnumerable。你正在使用哪個版本?它在NUnit v2.4上適用於我。 – adrianbanks 2009-10-30 11:25:32

+0

我想我同意你的意見;但是最後一次使用CollectionAssert.AreEquivalent時,我的字典比較失敗了。 nvm,我會先接受你的回答。忘記添加 – Graviton 2009-10-30 11:37:01