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