2009-10-30 6 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

+0

Dictionary 는 IEnumerable을 구현합니다. 어떤 버전을 사용하고 있습니까? 그것은 나를 위해 NUnit v2.4에서 작동합니다. – adrianbanks

+0

나는 당신과 동의한다고 생각합니다. 그러나 마지막으로 CollectionAssert.AreEquivalent를 사용하면 내 dict 비교가 실패합니다. nvm, 나는 당신의 대답을 먼저 받아 들일 것입니다. – Graviton