2009-10-30 9 views
17

Chcę, jeden liniowiec, w NUnit, który zapewnia, czy dwa słownika są takie same. to znaczy, chcę zwięzłą wersję poniższy kod:NUnit: Słownik 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]); 
    } 
} 

Z pewnością nie jest to takie trudne, ale nie mogę znaleźć odniesienia, jakiś pomysł?

Odpowiedz

25

Spójrz na CollectionAssert.AreEquivalent. Zapewni to, że oba słowniki mają tę samą treść, ale niekoniecznie są to te same instancje.

+2

Myślałem, że są tylko dla IEnumerable? Słownik wydaje się nie działać zgodnie z moimi testami. – Graviton

+0

Słownik implementuje IEnumerable. Jakiej wersji używasz? Działa dla mnie na NUnit v2.4. – adrianbanks

+0

Myślę, że zgadzam się z tobą; jednak ostatni raz używam CollectionAssert.AreEquivalent moje porównanie dyktafonu jakoś się nie udaje. nvm, po prostu zaakceptowałbym twoją odpowiedź. – Graviton