डुप्लिकेटेड कोड यूनिट टेस्ट कोड में एक गंध है जितना कि अन्य कोड में। यदि आपने परीक्षणों में कोड को डुप्लिकेट किया है, तो कार्यान्वयन कोड को फिर से भरना कठिन बना देता है क्योंकि आपके पास अपडेट करने के लिए परीक्षणों की संख्या बहुत अधिक है। टेस्ट में आपको आत्मविश्वास के साथ रिफ्लेक्टर बनाने में मदद करनी चाहिए, न कि एक बड़े बोझ के रूप में जो आपके काम को परीक्षण किए जा रहे कोड पर लागू करता है।
यदि दोहराव सेट अप में है, तो setUp
विधि का अधिक उपयोग करने या अधिक (या अधिक लचीली) निर्माण विधियों को प्रदान करने पर विचार करें ।
यदि दोहराव SUT में हेरफेर करने वाले कोड में है, तो अपने आप से पूछें कि कई तथाकथित "यूनिट" परीक्षण सटीक कार्यक्षमता का उपयोग क्यों कर रहे हैं।
यदि दोहराव मुखर है, तो शायद आपको कुछ कस्टम अभिकथन की आवश्यकता है । उदाहरण के लिए, यदि कई परीक्षणों में जोर दिया गया है जैसे:
assertEqual('Joe', person.getFirstName())
assertEqual('Bloggs', person.getLastName())
assertEqual(23, person.getAge())
फिर शायद आपको एक ही assertPersonEqual
विधि की आवश्यकता है , ताकि आप लिख सकें assertPersonEqual(Person('Joe', 'Bloggs', 23), person)
। (या शायद आपको बस समानता ऑपरेटर को अधिभारित करने की आवश्यकता है Person
।)
जैसा कि आप उल्लेख करते हैं, परीक्षण कोड को पठनीय होना जरूरी है। विशेष रूप से, यह महत्वपूर्ण है कि परीक्षण का इरादा स्पष्ट हो। मुझे लगता है कि अगर कई परीक्षण अधिकतर समान दिखते हैं, (उदाहरण के लिए तीन-चौथाई रेखाएँ समान या वस्तुतः समान) तो ध्यान से पढ़ने और उनकी तुलना किए बिना महत्वपूर्ण अंतरों को पहचानना और पहचानना कठिन है। इसलिए मुझे लगता है कि दोहराव को हटाने के लिए रीफैक्टरिंग से पठनीयता में मदद मिलती है, क्योंकि परीक्षण के उद्देश्य के लिए हर परीक्षण पद्धति की प्रत्येक पंक्ति सीधे प्रासंगिक है। पाठक के लिए यह अधिक उपयोगी है कि लाइनों का एक यादृच्छिक संयोजन जो सीधे प्रासंगिक है, और लाइनें जो केवल बॉयलरप्लेट हैं।
उस ने कहा, कभी-कभी परीक्षण जटिल परिस्थितियों का अभ्यास कर रहे हैं जो कि अनुकरणीय हैं, लेकिन अभी भी काफी अलग हैं, और नकल को कम करने के लिए एक अच्छा तरीका खोजना मुश्किल है। सामान्य ज्ञान का उपयोग करें: यदि आपको लगता है कि परीक्षण पठनीय हैं और उनकी मंशा को स्पष्ट करते हैं, और आप परीक्षण के द्वारा लागू किए गए कोड को रिफलेक्ट करते समय परीक्षण की सैद्धांतिक रूप से न्यूनतम संख्या से अधिक अपडेट करने की आवश्यकता के साथ सहज हैं, तो अपूर्णता स्वीकार करें और आगे बढ़ें कुछ और अधिक उत्पादक के लिए। आप हमेशा वापस आ सकते हैं और बाद में परीक्षण फिर से कर सकते हैं, जब प्रेरणा हमला करती है!