2009-01-28 8 views
14

एमएसडीएन दस्तावेज़ीकरण से Assert.Equals() के लिए विवरण: इस विधि का उपयोग न करें।माइक्रोसॉफ्ट.विज़ुअल स्टूडियो। टेस्टटूल.इनिट टेस्टिंग। एस्र्ट.इक्वाल्स() मौजूद क्यों है?

यही वह पूर्ण स्पष्टीकरण है। ओह .. ठीक है, लेकिन फिर ... यह क्यों है? क्या यह ढांचे के पहले संस्करण से एक बहिष्कृत विधि है? ऐसा कुछ जो केवल अन्य माइक्रोसॉफ्ट असेंबली द्वारा उपयोग किया जाना चाहिए?

यह सिर्फ मुझे उन सभी जानकारियों का उपयोग करना चाहता है जिन्हें मैं नहीं जानता हूं। ;-)

क्या किसी को पता है?

उत्तर

21

ईक्विल्स वस्तु से विरासत में मिला है। इसे "इस विधि का उपयोग न करें" के रूप में सूचीबद्ध किया गया है, इसलिए उपयोगकर्ता इसे AreEqual विधि से भ्रमित नहीं करेंगे।

+0

ध्यान दें कि 'संग्रह एएसएसर्ट'' का 'ओब्जेक्ट.इक्वाल्स' 'को उजागर करने का एक ही पतन है। ''Assert''' के विपरीत,' CollectionAssert'' विधि को फिर से परिभाषित नहीं करता है, इसलिए जब आप उस परीक्षण को चलाने से प्राप्त होते हैं जो आपको 'Assert.Equals'' युक्त परीक्षण चलाने से मिलता है तो आपको एक सहायक परीक्षण विफलता नहीं मिलती है। – vvnurmi

4

.NET में सभी ऑब्जेक्ट Object से प्राप्त होते हैं।

ऑब्जेक्ट में एक .quals() विधि है।

स्पष्ट रूप से इस विशेष वस्तु के लिए इक्वल्स() विधि कुछ भी उपयोगी नहीं करती है, इसलिए दस्तावेज़ आपको चेतावनी दे रहे हैं कि यह कुछ भी उपयोगी नहीं करता है।

1

यह 2008 (शायद SP1) में बदल गया था एक परीक्षण विफल जब कहा जाता है, ताकि जो लोग यह दुर्घटना से उपयोग कर रहे थे बताया गया वे वास्तव में इसे प्रयोग नहीं किया जाना चाहिए

1

Assert.Equals, इसकी आधारित श्रेणी विधि Object.Equals की तरह, वस्तुओं की तुलना करने के लिए पूरी तरह से उपयोगी है। हालांकि, न तो विधि स्टैंड-अलोन डिटेक्शन और रिपोर्टिंग या यूनिट परीक्षण में त्रुटियों के लिए उपयोगी है, क्योंकि Object.Equals मानों के बराबर नहीं होने पर फेंकने के बजाए एक बुलियन लौटाता है।

Assert.Equals(42, ComputeMeaningOfLife()); 

इस इकाई संभवतः बहुत लंबा :-) चल परीक्षण की समस्या के अलावा, इस परीक्षण चुपचाप कामयाब होने की भले ही कंप्यूट विधि गलत परिणाम प्रदान करता है: यह एक समस्या है, तो एक इकाई परीक्षण में इस तरह इस्तेमाल किया जाता है । उपयोग करने का सही तरीका Assert.AreEqual है, जो कुछ भी वापस नहीं करता है, लेकिन पैरामीटर बराबर नहीं होने पर अपवाद फेंकता है।

Assert.Equals जोड़ा गया था इसलिए उपरोक्त नमूने में कोड Object.Equals पर वापस नहीं आ गया है और चुपचाप इकाई परीक्षण को निष्क्रिय करता है। इसके बजाए, जब यूनिट टेस्ट से कहा जाता है, Assert.Equals हमेशा एक अपवाद फेंकता है जो आपको याद दिलाता है कि इसका उपयोग न करें।

संबंधित मुद्दे