मैं वर्तमान में ASP.Net MVC एप्लिकेशन के लिए ग्राउंडवर्क सेट कर रहा हूं और मैं देख रहा हूं कि मुझे लिखने के लिए किस तरह के यूनिट-टेस्ट तैयार करने चाहिए। मैंने कई स्थानों पर लोगों को अनिवार्य रूप से यह कहते हुए देखा है कि 'अपने विचारों का परीक्षण करने से परेशान न हों, कोई तर्क नहीं है और यह तुच्छ है और एक एकीकरण परीक्षण द्वारा कवर किया जाएगा'।
मुझे समझ में नहीं आता है कि यह कैसे स्वीकृत ज्ञान बन गया है। एकीकरण परीक्षण इकाई परीक्षणों की तुलना में पूरी तरह से अलग उद्देश्य की सेवा करते हैं। अगर मैं कुछ तोड़ता हूं, तो मैं आधे घंटे बाद जानना नहीं चाहता जब मेरा एकीकरण परीक्षण टूट जाता है, मैं तुरंत जानना चाहता हूं।
नमूना परिदृश्य: कहते हैं कि हम एक ग्राहक इकाई के साथ एक मानक CRUD ऐप के साथ काम कर रहे हैं। ग्राहक का एक नाम और एक पता होता है। परीक्षण के प्रत्येक स्तर पर, मैं यह सत्यापित करना चाहता हूं कि ग्राहक पुनः प्राप्ति तर्क नाम और पते दोनों को ठीक से प्राप्त करता है।
रिपॉजिटरी को यूनिट-टेस्ट करने के लिए, मैं डेटाबेस को हिट करने के लिए एक एकीकरण परीक्षण लिखता हूं। व्यावसायिक नियमों को इकाई-परीक्षण करने के लिए, मैं रिपॉजिटरी का मजाक उड़ाता हूं, व्यापार के नियमों को उचित डेटा खिलाता हूं, और सत्यापित करता हूं कि मेरे अपेक्षित परिणाम वापस आ गए हैं।
मैं क्या करना चाहूंगा: UI को यूनिट-टेस्ट करने के लिए, मैं व्यावसायिक नियमों का मजाक उड़ाता हूं, अपनी अपेक्षित ग्राहक आवृत्ति सेट करता हूं, दृश्य प्रस्तुत करता हूं, और सत्यापित करता हूं कि दृश्य में मेरे द्वारा निर्दिष्ट उदाहरण के लिए उपयुक्त मान हैं।
मैं क्या कर रहा हूँ: रिपॉजिटरी को यूनिट-टेस्ट करने के लिए, मैं एक इंटीग्रेशन टेस्ट लिखता हूं, एक उपयुक्त लॉगिन सेटअप करता हूं, डेटाबेस में आवश्यक डेटा बनाता हूं, एक ब्राउज़र खोलता हूं, ग्राहक को नेविगेट करता हूं, और परिणामी पृष्ठ को सत्यापित करता हूं जिसमें उपयुक्त होता है मेरे द्वारा निर्दिष्ट उदाहरण के लिए मान।
मुझे लगता है कि ऊपर चर्चा किए गए दो परिदृश्यों के बीच ओवरलैप है, लेकिन महत्वपूर्ण अंतर यह समय और प्रयासों को सेट करने और परीक्षणों को निष्पादित करने के लिए आवश्यक है।
यदि मैं (या अन्य देव) दृश्य क्षेत्र को दृश्य से हटाता हूं, तो मैं इसे खोजने के लिए एकीकरण परीक्षण की प्रतीक्षा नहीं करना चाहता। मैं चाहता हूं कि एक यूनिट-टेस्ट में खोजा और चिह्नित किया जाए जो रोज़ाना कई बार मिलता है।
मुझे लग रहा है कि मैं कुछ प्रमुख अवधारणा को समझ नहीं रहा हूँ। क्या कोई समझा सकता है कि एमवीसी देखने की वैधता पर तत्काल परीक्षण प्रतिक्रिया क्यों एक बुरी बात है? (या यदि बुरा नहीं है, तो प्रतिक्रिया प्राप्त करने का अपेक्षित तरीका नहीं है)
"To unit-test the repository, I write an integration test"
रुको क्या? यह भंडार का एक इकाई परीक्षण नहीं है। आप इसके लिए परीक्षण को स्वचालित कर रहे हैं, लेकिन परीक्षण के तहत कोड में अभी भी DAL और डेटाबेस शामिल हैं। आपके पास अपने व्यावसायिक नियमों के लिए आपके पास मौजूद रिपॉजिटरी का परीक्षण करने के लिए इसे अलग-अलग करना होगा।