2009-10-30 30 views
17

Tôi muốn một một lót, trong NUnit, xác nhận xem hai từ điển có giống nhau hay không. tức là, tôi muốn có một phiên bản ngắn gọn của mã bên dưới: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]); 
    } 
} 

Chắc chắn nó không quá khó, nhưng tôi không thể tìm thấy tham chiếu, ý tưởng nào?

Trả lời

25

Hãy xem CollectionAssert.AreEquivalent. Điều này sẽ khẳng định rằng hai từ điển có cùng nội dung, nhưng không nhất thiết phải là cùng một ví dụ.

+2

Tôi nghĩ chúng chỉ dành cho IEnumerable? Từ điển dường như không hoạt động, theo thử nghiệm của tôi. – Graviton

+0

Từ điển triển khai IEnumerable. Phiên bản bạn đang sử dụng? Nó hoạt động với tôi trên NUnit v2.4. – adrianbanks

+0

Tôi nghĩ rằng tôi đồng ý với bạn; Tuy nhiên thời gian qua tôi sử dụng CollectionAssert.AreEquivalent so sánh dict của tôi bằng cách nào đó thất bại. nvm, tôi sẽ chỉ chấp nhận câu trả lời của bạn trước. – Graviton