निश्चित रूप से एक अच्छी सूची। यहां कुछ विचार दिए गए हैं:
पहले परीक्षण लिखें, फिर कोड।
मैं उच्च स्तर पर सहमत हूं।लेकिन, मैं और अधिक विशिष्ट होगा: "पहले एक परीक्षण लिखें, फिर लिखें, परीक्षा पास करने के लिए पर्याप्त कोड लिखें और दोहराएं।" अन्यथा, मुझे डर होगा कि मेरे यूनिट परीक्षण एकीकरण या स्वीकृति परीक्षण की तरह दिखेंगे।
निर्भरता इंजेक्शन का उपयोग कर डिज़ाइन कक्षाएं।
सहमत हुए। जब कोई ऑब्जेक्ट अपनी निर्भरता बनाता है, तो आपके ऊपर उनका कोई नियंत्रण नहीं होता है। नियंत्रण/निर्भरता इंजेक्शन का उलटा आपको उस नियंत्रण को देता है, जिससे आप वस्तु को मॉक्स/स्टब्स/आदि के साथ परीक्षण के तहत अलग कर सकते हैं। इस प्रकार आप अलगाव में वस्तुओं का परीक्षण करते हैं।
मॉडल-व्यू-कंट्रोलर या मॉडल-व्यू-प्रेजेंटर का उपयोग करके अपने व्यवहार से पृथक यूआई कोड।
सहमत हुए। ध्यान दें कि प्रस्तुतकर्ता/नियंत्रक को डीआई/आईओसी का उपयोग करके परीक्षण किया जा सकता है, इसे एक स्टबबेड/मॉकड व्यू और मॉडल सौंपकर। उस पर और अधिक के लिए Presenter First टीडीडी देखें।
स्थिर विधियों या कक्षाएं न लिखें।
सुनिश्चित नहीं है कि मैं इस से सहमत हूं। मोक्स का उपयोग किये बिना एक स्थिर विधि/कक्षा का परीक्षण करना संभव है। तो, शायद यह उन राइनो मॉक विशिष्ट नियमों में से एक है जिसका आपने उल्लेख किया था।
इंटरफेस से प्रोग्राम, कक्षाओं में प्रोग्राम।
मैं सहमत हूं, लेकिन थोड़ा अलग कारण के लिए। इंटरफेस सॉफ़्टवेयर डेवलपर को लचीलापन प्रदान करता है - विभिन्न मॉक ऑब्जेक्ट फ्रेमवर्क के लिए केवल समर्थन से परे। उदाहरण के लिए, बिना इंटरफ़ेस के DI को ठीक से समर्थन करना संभव नहीं है।
बाहरी निर्भरताओं को अलग करें।
सहमत हुए। एक इंटरफ़ेस के साथ अपने स्वयं के मुखौटा या एडाप्टर (उपयुक्त के रूप में) के पीछे बाहरी निर्भरताओं को छुपाएं। यह आपको बाहरी निर्भरता से अपने सॉफ़्टवेयर को अलग करने की अनुमति देगा, चाहे वह एक वेब सेवा हो, एक कतार, डेटाबेस या कुछ और हो। यह विशेष रूप से महत्वपूर्ण है जब आपकी टीम निर्भरता (ए.के.ए. बाहरी) को नियंत्रित नहीं करती है।
वर्चुअल विधियों के रूप में चिह्नित करें जिन्हें आप नकल करना चाहते हैं।
यह राइनो मोक्स की एक सीमा है। एक ऐसे माहौल में जो नकली ऑब्जेक्ट ढांचे पर हाथ कोडित स्टब्स पसंद करता है, वह आवश्यक नहीं होगा।
और, नए अंक के एक जोड़े पर विचार करना: creational डिजाइन पैटर्न
का प्रयोग करें। यह DI के साथ सहायता करेगा, लेकिन यह आपको उस कोड को अलग करने और अन्य तर्कों से स्वतंत्र रूप से परीक्षण करने की अनुमति देता है।
Bill Wake's Arrange/Act/Assert technique का उपयोग करके परीक्षण लिखें। यह तकनीक यह स्पष्ट करती है कि कॉन्फ़िगरेशन आवश्यक है, वास्तव में परीक्षण किया जा रहा है, और क्या अपेक्षित है।
अपने स्वयं के मोजे/स्टब्स रोल करने से डरो मत। अक्सर, आप पाएंगे कि मॉक ऑब्जेक्ट फ्रेमवर्क का उपयोग करके आपके परीक्षणों को पढ़ने के लिए अविश्वसनीय रूप से कठिन बना दिया जाता है। अपना खुद का रोल करके, आप अपने मोजे/स्टब्स पर पूरा नियंत्रण रखेंगे, और आप अपने परीक्षणों को पठनीय रखने में सक्षम होंगे। (पिछली बिंदु पर वापस देखें।)
अमूर्त आधार वर्गों, या सेटअप/टियरडाउन विधियों में अपने यूनिट परीक्षणों से डुप्लिकेशंस को दोबारा करने के प्रलोभन से बचें। यूनिट परीक्षण को ग्रोक करने की कोशिश कर रहे डेवलपर से कॉन्फ़िगरेशन/क्लीन-अप कोड को छुपाएं। इस मामले में, प्रत्येक व्यक्तिगत परीक्षण की स्पष्टता डुप्लिकेशंस को पुन: सक्रिय करने से अधिक महत्वपूर्ण है।
सतत एकीकरण लागू करें। प्रत्येक "ग्रीन बार" पर अपना कोड चेक-इन करें। अपने सॉफ़्टवेयर का निर्माण करें और प्रत्येक चेक-इन पर यूनिट परीक्षणों का पूरा सूट चलाएं। (निश्चित रूप से, यह कोडिंग अभ्यास नहीं है, लेकिन यह आपके सॉफ़्टवेयर को साफ और पूरी तरह से एकीकृत रखने के लिए एक अविश्वसनीय टूल है।)
यह एक उपयोगी सूची है। वर्तमान में हम न्यूटिट और राइनो.मोक्स का उपयोग कर रहे हैं, और टीम के सदस्यों के लिए इन मानदंडों को स्पेल करना अच्छा होता है जो यूनिट परीक्षण के इस पक्ष से कम परिचित हैं। –