हम एक नए सॉफ्टवेयर डेवलपमेंट प्रोजेक्ट में स्ट्रक्च्योर मैप का उपयोग कर रहे हैं । टीम के सदस्यों में से एक ने एक इकाई परीक्षण लागू किया है जो मूल रूप से स्ट्रक्च्योर मैप कंटेनर कॉन्फ़िगरेशन का परीक्षण करता है। यह निम्न कार्य करके करता है;
- उन विधानसभाओं के उदाहरणों की संख्या की गणना करता है जो हमारे एप्लिकेशन नामस्थान में कक्षाओं के लिए कॉन्फ़िगर किए गए हैं।
- वर्ग स्तर पर अपेक्षित उदाहरणों को परिभाषित करता है
- ऐसे उदाहरण जो उम्मीद करते हैं कि कुल मिलाएँ उदाहरणों से मेल खाती हैं।
- ऐसे उदाहरण जो उम्मीद करते हैं कि परीक्षण में परिभाषित उन लोगों से मेल खाते हैं
इसका एक उदाहरण है;
var repositories = container.GetAllInstances<IEnvironmentRepository>();
Assert.AreEqual(1, repositories .Count());
foundInstances = foundInstances + repositories .Count();
हमारे पास निम्न वर्ग के लिए 'यूनिट टेस्ट' भी हैं;
public MyClass(IEnvironmentRepository environmentRepository)
{
}
इन परीक्षणों में, हम IEnvironmentRepository का मजाक उड़ाते हैं, इसलिए इसे कंटेनर से इंजेक्ट नहीं किया जाएगा जैसा कि लाइव सिस्टम में होगा।
एक सहकर्मी ने "यूनिट टेस्ट केवल परीक्षण यह स्वयं कॉन्फ़िगरेशन" की लाइन के साथ एक टिप्पणी के साथ स्ट्रक्चरमैप कॉन्फ़िगरेशन पर यूनिट परीक्षण को नजरअंदाज कर दिया। यह स्पष्ट रूप से परीक्षण का उद्देश्य था और मेरी राय में पूरी तरह से मान्य है। मैंने उस व्यक्ति से पूछा जिसने संरचना परीक्षण विन्यास को हटाने के लिए परीक्षण को अनदेखा कर दिया IEnvironmentRepository
(परीक्षण अभी भी अनदेखा किया गया है) और पूर्ण इकाई परीक्षण सूट को चलाने के लिए, वे सभी पास हुए। हमने तब एप्लिकेशन चलाया और यह गिर गया क्योंकि कंटेनर कॉन्फ़िगरेशन अब अमान्य था। मेरी राय में, यह परीक्षण का मूल्य साबित हुआ, मेरे सहयोगी अभी भी असहमत थे। उन्होंने बस इतना कहा कि हमें कॉन्फ़िगरेशन का परीक्षण नहीं करना चाहिए, लेकिन मैं इसे एक यूनिट टेस्ट के रीमिट के लिए अच्छी तरह समझता हूं।
तो कई सवाल;
- क्या यह एक मान्य इकाई परीक्षण है - हम अपने कंटेनर के विन्यास का परीक्षण कर रहे हैं, न कि संरचना का काम करता है (लेकिन मैं ओवरलैप देख सकता हूं)
- यदि नहीं, तो आप परीक्षण के बिना कॉन्फ़िगरेशन को कैसे मान्य कर सकते हैं। आप किसी को गलती से कोड की एक आवश्यक लाइन को हटाने और इसे जांचने से कैसे रोक सकते हैं?
- क्या
MyClass
इकाई परीक्षणIEnvironmentRepository
कंटेनर से उदाहरण को हल करना चाहिए और इसे पास करना चाहिए ?