2013-07-11 15 views
6

Czy wiesz, w jaki sposób można Twierdzę dwa słowniki typuJak dochodzić Słowniki w Unit Testing

Dictionary<string,List<string>> 

w moim projekcie badanej jednostki?

Próbowałem z CollectionsAssert, ale nie działało dla mnie. Domyślam się, że proste słowniki są parametrami (np. Dictionary<string,string>). Przypuszczam, że problem dla mnie pochodzi z drugiego parametru ze słownika. Czy wiesz jak mogę potwierdzić te dwa słowniki?

+0

Co ramy testowania używacie? –

+0

. Testowanie jednostek .NET – mathinvalidnik

Odpowiedz

7

Jednym ze sposobów, które daje dobry komunikat o błędzie:

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)); 
+0

co jeśli słownik zawiera listę obiektów jako wartości? – k2ibegin

9

użyciu LINQ:

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

To dla mnie w ogóle nie działa. – mathinvalidnik

+0

Nice ... Po prostu upewnij się, aby dodać 'using System.Linq;' – saluce

+0

Działa to dla C# 3.0 i wyżej. Dla C# 2.0 można użyć: 'delegate (KeyValuePair e) {return properties. Zawiera (e); } ' –

Powiązane problemy