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