यह थोड़ी देर के लिए मैंने मैकननेल के "Code Complete" तैयार किया है। अब मैं इसे फिर से पढ़ता हूं & थॉमस 'The Pragmatic Programmer ": दावे का प्रयोग करें! नोट: यूनिट परीक्षण दावे नहीं, मेरा मतलब है Debug.Assert()
।यूनिट परीक्षण डीबग.एएसएसर्ट() अनावश्यक बनाता है?
SO प्रश्नों के बाद When should I use Debug.Assert()? और When to use assertion over exceptions in domain classes दावा विकास के लिए उपयोगी हैं, क्योंकि "असंभव" परिस्थितियां काफी तेजी से पाई जा सकती हैं। और ऐसा लगता है कि वे आमतौर पर उपयोग किया जाता है। जहां तक मैं अनुमानों को समझता हूं, सी # में उन्हें अक्सर "असंभव" मानों के लिए इनपुट चर की जांच के लिए उपयोग किया जाता है।
यूनिट परीक्षणों को संक्षिप्त और यथासंभव अलग रखने के लिए, मैं कक्षाओं और विधियों को null
एस और "असंभव" डमी इनपुट (खाली स्ट्रिंग की तरह) के साथ फ़ीड करता हूं।
ऐसे परीक्षण स्पष्ट रूप से दस्तावेज कर रहे हैं, कि वे कुछ विशिष्ट इनपुट पर भरोसा नहीं करते हैं। नोट: मैं अभ्यास कर रहा हूं कि मेज़ारोस '' xUnit टेस्ट पैटर्न "Minimal Fixture के रूप में वर्णन कर रहा है।
और यही बात है: अगर मुझे इन इनपुटों की रक्षा करने का दावा होगा, तो वे मेरे यूनिट परीक्षणों को उड़ा देंगे।
मुझे आर्टेटिव प्रोग्रामिंग का विचार पसंद है, लेकिन दूसरी तरफ मुझे इसे मजबूर करने की आवश्यकता नहीं है। वर्तमान में मैं Debug.Assert()
के लिए किसी भी उपयोग के बारे में नहीं सोच सकता। शायद मुझे कुछ याद आती है? क्या आपके पास कोई सुझाव है, जहां वे वास्तव में उपयोगी हो सकते हैं? हो सकता है कि मैं सिर्फ दावे की उपयोगिता को अधिक महत्व देता हूं? या शायद परीक्षण के मेरे तरीके की समीक्षा की जरूरत है?
संपादित करें: Best practice for debug Asserts during Unit testing बहुत समान है, लेकिन यह मुझे परेशान करने वाले प्रश्न का उत्तर नहीं देता है: यदि मुझे परीक्षण किया गया है तो मुझे Debug.Assert()
पर ध्यान देना चाहिए? यदि हां, तो किस स्थिति में वे वास्तव में उपयोगी हैं? मेरे वर्तमान दृष्टिकोण में ऐसे यूनिट टेस्ट Debug.Assert()
अनावश्यक बना देंगे।
एक और बिंदु: यदि आप वास्तव में सोचते हैं, यह एक डुप्लिकेट प्रश्न है, तो बस कुछ टिप्पणी पोस्ट करें।
ध्यान दें कि विजुअल स्टूडियो का परीक्षण ढांचा * डीबग का इलाज नहीं करता है। यूनिट परीक्षण विफलता के रूप में एसेटर्ट विफलता। – yoyo