मान लें कि मेरे पास एक जटिल .NET क्लास है, जिसमें बहुत सारे सरणी और अन्य क्लास ऑब्जेक्ट सदस्य हैं। मुझे इस ऑब्जेक्ट का एक गहरा क्लोन उत्पन्न करने में सक्षम होना चाहिए - इसलिए मैं क्लोन() विधि लिखता हूं, और इसे सरल बाइनरीफॉर्मेटर धारावाहिक/deserialize के साथ कार्यान्वित करता हूं - या शायद मैं किसी अन्य तकनीक का उपयोग करके गहरा क्लोन करता हूं जो अधिक त्रुटि प्रवण होता है और मैं निश्चित रूप से परीक्षण करना चाहता हूं।गहरे क्लोनिंग के लिए यूनिट परीक्षण
ठीक है, तो अब (ठीक है, मुझे इसे पहले करना चाहिए था) मैं क्लोनिंग को कवर करने वाले परीक्षण लिखना चाहता हूं। कक्षा के सभी सदस्य निजी हैं, और मेरा वास्तुकला इतना अच्छा है (!) कि मुझे सैकड़ों सार्वजनिक संपत्तियों या अन्य एक्सेसर्स लिखने की आवश्यकता नहीं है। कक्षा आईसीओपरपेबल या आईक्वाटेबल नहीं है, क्योंकि एप्लिकेशन द्वारा इसकी आवश्यकता नहीं है। मेरा यूनिट परीक्षण उत्पादन कोड के लिए एक अलग असेंबली में हैं।
क्लोन ऑब्जेक्ट एक अच्छी प्रति है यह जांचने के लिए लोग क्या दृष्टिकोण लेते हैं? क्या आप लिखते हैं (या क्लोन की आवश्यकता को खोजने के बाद फिर से लिखना) कक्षा के लिए आपके सभी यूनिट परीक्षण ताकि उन्हें या तो 'वर्जिन' ऑब्जेक्ट या के क्लोन के साथ बुलाया जा सके? क्लोनिंग का हिस्सा पर्याप्त गहरा नहीं था, तो आप कैसे परीक्षण करेंगे - क्योंकि यह केवल ऐसी ही समस्या है जो बाद में घृणित खोज पागल दे सकती है?