2009-10-30 23 views
17

मुझे एक लाइनर, न्यूटिट में, यह दावा करता है कि दो शब्दकोश समान हैं या नहीं। जैसे कि, मैं नीचे दिए गए कोड का एक संक्षिप्त संस्करण चाहते हैं:NUnit: शब्दकोश 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

मैंने सोचा कि वे केवल आईनेमेरेबल के लिए हैं? मेरे परीक्षण के मुताबिक, शब्दकोश काम नहीं कर रहा है। – Graviton

+0

शब्दकोश IENumerable लागू करता है। आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है? यह मेरे लिए NUnit v2.4 पर काम करता है। – adrianbanks

+0

मुझे लगता है कि मैं आपसे सहमत हूं; हालांकि आखिरी बार जब मैं CollectionAssert.AreEquivalent का उपयोग करता हूं तो मेरी dict तुलना किसी भी तरह विफल हो जाती है। एनवीएम, मैं बस अपना जवाब पहले स्वीकार करूँगा। – Graviton

0

आप कंधे नामक लाइब्रेरी का उपयोग करके ढांचे के अज्ञेयवादी आवेषण लिख सकते हैं। इसमें एक बहुत अच्छा धाराप्रवाह वाक्यविन्यास भी होता है जिसका उपयोग आप धाराप्रवाह इंटरफ़ेस पसंद करते हैं। मेरे पास एक ब्लॉग पोस्ट संबंधित था।

http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html