2009-10-30 14 views
17

Quiero un un trazador de líneas, en NUnit, que afirma si dos diccionarios son iguales. es decir, quiero una versión concisa del código de abajo:NUnit: Assert diccionario

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

Sin duda, no es tan difícil, pero no puedo encontrar la referencia, alguna idea?

Respuesta

25

Eche un vistazo a CollectionAssert.AreEquivalent. Esto afirmará que los dos diccionarios tienen los mismos contenidos, pero no necesariamente son la misma instancia.

+2

Pensé que son solo para IEnumerable? El diccionario no parece funcionar, de acuerdo con mis pruebas. – Graviton

+0

Diccionario implementa IEnumerable. ¿Qué versión está utilizando? Funciona para mí en NUnit v2.4. – adrianbanks

+0

Creo que estoy de acuerdo contigo; sin embargo, la última vez que utilicé CollectionAssert.AreEquivalent mi comparación dict fracasó. nvm, simplemente aceptaría tu respuesta primero. – Graviton