संक्षेप में, जावा के ऑब्जेक्ट के अनुसार हैशकोड अनुबंध। शशकोड ():
- हैश कोड तब तक नहीं बदलना चाहिए जब तक कि कुछ बराबर () परिवर्तनों को प्रभावित न करे
- बराबर () का तात्पर्य हैश कोड == हैं
मान लें कि मुख्य रूप से अपरिवर्तनीय डेटा ऑब्जेक्ट्स में रुचि है - उनके निर्माण के बाद उनकी जानकारी कभी नहीं बदलती है, इसलिए # 1 को धारण करने के लिए माना जाता है। यह # 2 छोड़ देता है: समस्या बस यह पुष्टि करने में से एक है कि हैश कोड == के बराबर है।
जाहिर है, हम प्रत्येक बोधगम्य डेटा ऑब्जेक्ट का परीक्षण नहीं कर सकते जब तक कि सेट तुच्छ रूप से छोटा न हो। तो, यूनिट परीक्षण लिखने का सबसे अच्छा तरीका क्या है जो सामान्य मामलों को पकड़ने की संभावना है?
चूंकि इस वर्ग के उदाहरण अपरिवर्तनीय हैं, इसलिए इस तरह की वस्तु के निर्माण के सीमित तरीके हैं; यदि संभव हो तो यह इकाई परीक्षण उन सभी को कवर करना चाहिए। मेरे सिर के ऊपर से, प्रवेश बिंदु भवन निर्माता, डिसेरिएलाइज़ेशन, और उपवर्गों के निर्माता हैं (जो कि निर्माता को कॉल समस्या से छुटकारा दिलाने वाला होना चाहिए)।
[मैं अनुसंधान के माध्यम से अपने स्वयं के प्रश्न का उत्तर देने का प्रयास करने जा रहा हूं। अन्य StackOverflowers से इनपुट इस प्रक्रिया के लिए एक स्वागत योग्य सुरक्षा तंत्र है।]
[यह अन्य OO भाषाओं पर लागू हो सकता है, इसलिए मैं उस टैग को जोड़ रहा हूं।]