मैं सोच रहा हूं कि लोग कैसे यूनिट परीक्षण करते हैं और जोर देते हैं कि "अपेक्षित" संग्रह "वास्तविक" संग्रह के समान/समान है (ऑर्डर महत्वपूर्ण नहीं है)।इकाई परीक्षण संग्रह का सबसे अच्छा तरीका?
इस दावे करने के लिए, मैं अपने सरल ज़ोर एपीआई लिखा है: -
public void assertCollection(Collection<?> expectedCollection, Collection<?> actualCollection) {
assertNotNull(expectedCollection);
assertNotNull(actualCollection);
assertEquals(expectedCollection.size(), actualCollection.size());
assertTrue(expectedCollection.containsAll(actualCollection));
assertTrue(actualCollection.containsAll(expectedCollection));
}
खैर, यह काम करता है। यह बहुत आसान है अगर मैं केवल इंटीजर या स्ट्रिंग्स का गुच्छा लगा रहा हूं। अगर मैं हाइबरनेट डोमेन का संग्रह करने की कोशिश कर रहा हूं, तो यह भी बहुत दर्दनाक हो सकता है, उदाहरण के लिए कहें। संग्रह.containsAll (..) चेक करने के लिए बराबर (..) पर निर्भर करता है, लेकिन मैं हमेशा अपने हाइबरनेट डोमेन में बराबर (..) को ओवरराइड करता हूं ताकि केवल व्यवसाय कुंजी जांच सकें (जो कि सबसे अच्छा अभ्यास है हाइबरनेट वेबसाइट) और उस डोमेन के सभी फ़ील्ड नहीं। निश्चित रूप से, यह केवल व्यवसाय कुंजी के खिलाफ जांच करना समझ में आता है, लेकिन कई बार मैं वास्तव में यह सुनिश्चित करना चाहता हूं कि सभी फ़ील्ड सही हैं, न केवल व्यवसाय कुंजी (उदाहरण के लिए, नया डेटा एंट्री रिकॉर्ड)। तो, इस मामले में, मैं domain.equals (..) के साथ गड़बड़ नहीं कर सकता और ऐसा लगता है कि मुझे कुछ compators को केवल compution.contains पर निर्भर करने के बजाय इकाई परीक्षण उद्देश्यों के लिए लागू करने की आवश्यकता है। (सभी)।
क्या कुछ परीक्षण पुस्तकालय मैं यहां लाभ उठा सकते हैं? आप अपने संग्रह का परीक्षण कैसे करते हैं?
धन्यवाद।
यह मेरे संग्रह के दावे के लिए एक अच्छा तरीका प्रतीत होता है। यदि ए बी बढ़ाता है, तो मुझे लगता है कि यह ए और बी दोनों के खेतों का विवरण लेगा, क्या यह सही है? मैं इसे एपीआई दस्तावेज में नहीं ढूंढ सकता, लेकिन मुझे लगता है कि मैं इसका परीक्षण कर सकता हूं। क्या ए और बी से केवल फ़ील्ड पर जोर देने के लिए नियम निर्दिष्ट करने का कोई तरीका है? – limc
ठीक है, यह बहुत बढ़िया है ... बस प्रलेखन को पढ़ें, और ऐसा लगता है कि मुझे ReflectionAssert.assertLenientEquals (..) का उपयोग करना चाहिए क्योंकि यह आइटम ऑर्डर का खाता नहीं लेता है। बहुत धन्यवाद। – limc
@limc। आपका स्वागत है। मुझे बस सबक्लास फ़ील्ड की जांच करने के तरीके पर यकीन नहीं है (यह संभव हो सकता है, मैंने कभी कोशिश नहीं की है)। –