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