2009-10-03 14 views
25

जुनीट का उपयोग करके समानता के लिए ArrayLists की तुलना करने का एक आसान तरीका क्या है? क्या मुझे समानता इंटरफ़ेस को लागू करने की आवश्यकता है? या क्या एक साधारण जुनीट विधि है जो इसे आसान बनाता है?जुनीट का उपयोग करके समानता के लिए ArrayLists की तुलना करने का आसान तरीका?

+0

[जूनिट में सम्मिलित सूची] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/3236880/assert-list-in-junit) – djeikyb

उत्तर

44

आपको सूची समानता के लिए कुछ भी विशेष करने की आवश्यकता नहीं है, केवल assertEquals का उपयोग करें।

ऐरेलिस्ट और अन्य सूचियों को यह जांचकर बराबर() लागू करता है कि सूचियों की इसी स्थिति में सभी ऑब्जेक्ट्स बराबर हैं, ऑब्जेक्ट्स के बराबर() विधि का उपयोग करते हुए। तो आप यह जांचना चाहेंगे कि सूची में ऑब्जेक्ट्स सही तरीके से लागू होते हैं।

+0

हां, मैंने देखा कि जब मैं दस्तावेज़ पढ़ता हूं। –

+0

इस उत्तर के साथ समस्या यह है कि यह विफलता पर सूची की सामग्री की रिपोर्ट नहीं करेगा। AssertThat (ए, है (बी)) का उपयोग करने का प्रयास करें; बजाय। बराबर लागू करने के बारे में स्टारब्लू की चेतावनी अभी भी है। यह भी देखें [डुप्लिकेट प्रश्न 3236880] (http://stackoverflow.com/questions/3236880/assert-list-in-junit): बेहतर उत्तर और कोड नमूने वहां। – Barett

+0

भविष्य से अपडेट करें: यह प्राचीन प्रकार के सरणी पर काम नहीं करता है, और किसी भी मामले में, assertEquals (ऑब्जेक्ट [], ऑब्जेक्ट []) को बहिष्कृत किया गया है। AssertArrayEquals का प्रयोग करें। – johncip

6

आप List.equals के लिए प्रलेखन की जांच कर सकते हैं।

+0

मैं जावा धन्यवाद के लिए नया हूं। –

+0

तो क्या इसका मतलब यह है कि अगर मेरे पास सूची है तो मुझे कुछ क्लास के बराबर ओवरराइड करने की आवश्यकता होगी? –

+6

यह 'ऑब्जेक्ट.equals' के साथ सूचियों के तत्वों की तुलना करेगा। डिफ़ॉल्ट रूप से यह सच होगा यदि वे एक ही उदाहरण हैं। यदि आप एक ही आंतरिक डेटा से मेल खाने के लिए अलग-अलग ऑब्जेक्ट्स को अनुमति देना चाहते हैं, तो उन्हें 'समान '(और' हैशकोड') विधि के साथ 'SomeClass' प्रदान करना चाहिए। –

2

मुझे लगता है कि यह थोड़ा आसान जवाब हो सकता है (हालांकि यह सही है)। बराबर के लिए परीक्षण ऐरेलिस्ट का तात्पर्य है कि आपने तत्वों की समानता को सोचा है। यदि तत्व इंटीग्रर्स हैं जो ठीक है। लेकिन अगर वे आपके स्वयं के डोमेन वर्गों के उदाहरण हैं, तो आपको समानता (और क्लोनिंग) के आसपास के नुकसान के बारे में अवगत कराया जाना चाहिए। समानता को लागू करने के बारे में सुझाव दिए गए का एक अच्छा सेट के लिए

http://www.artima.com/lejava/articles/equality.html

: कृपया की जाँच करें। एक तरफ: यदि आपको कभी भी वस्तुओं को क्लोन करने की आवश्यकता है, तो क्लोनेबल को लागू करने के बजाय कॉपी कन्स्ट्रक्टर के उपयोग पर विचार करें। क्लोनेबल उन समस्याओं का एक पूरा सेट पेश करता है जिनकी आप उम्मीद नहीं कर सकते हैं।

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

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