.net समझ क्या शून्य के बदले एक XmlDocument पर SelectNodes के लिए संभव है?




शून्य से भाग (3)

यदि आप XmlDocument पर SelectNodes को बुला रहे हैं और यह वास्तव में एक XmlDocument है और नहीं SelectNodes की तुलना में व्युत्पन्न वर्ग नल नहीं लौटाएगा।

यदि आप एक वंशज वर्ग बनाते हैं और CreateNavigator (XmlNode) पद्धति को ओवरराइड करते हैं, तो SelectNodes नल वापस आ सकता है।

इसी तरह, यदि आप एंटिटीरेक्शन्स, डॉकलाइन टाइप या एक्सएमएलडीक्लेरेशन नोड पर सेलेनोड्स को कॉल करते हैं, तो आप भी रिक्त हो जाएंगे

संक्षेप में, एक XmlDocument या XmlNode पर 100% कवरेज के लिए आपने अभी नहीं बनाया है, आपको नल के लिए परीक्षण करना होगा।

क्या शून्य के बदले एक XmlDocument पर कॉल करने के लिए चयन नोड्स () संभव है?

मेरी दुर्दशा यह है कि मैं 100% यूनिट परीक्षा कोड कवरेज तक पहुंचने की कोशिश कर रहा हूं; रीशरपर मुझे बताता है कि मुझे चयन नोड्स () विधि से एक रिक्त वापसी के खिलाफ की रक्षा की आवश्यकता है, लेकिन मुझे कोई रास्ता नहीं मिल सकता है कि कोई XmlDocument नल (और इसलिए, मेरे गार्ड क्लास की जांच करने और 100% यूनिट परीक्षण कवरेज तक पहुंचने का कोई रास्ता नहीं लौटा सकता है! )


रिफ्लेक्टर को देखते हुए, XmlDocument के आधार वर्ग, XmlNode पर SelectNodes () विधि नल ​​को वापस कर सकती है अगर एक नेविगेटर रिटर्न नल का निर्माण करने का प्रयास है। CreateNavigator () बहुत जटिल है और वास्तव में कुछ परिस्थितियों के तहत शून्य वापस करेगा। ये परिस्थितियां एक विकृत XML दस्तावेज़ के आसपास दिखाई देती हैं - इसलिए SelectNodes की विफलता के लिए आपका परीक्षण मामला है ()।


क्या यह 100% कोड कवरेज तक पहुंचने के लिए आवश्यक है? वास्तव में, क्या यह सामान्य (यानी नियंत्रणीय, परीक्षण योग्य) परिस्थितियों में भी संभव है?

हम अक्सर पाते हैं कि "syntactic sugar" निर्माण का using {} ब्लॉक using {} , वहाँ "छिपी" कोड पथ तैयार किए गए हैं ( finally {} या catch {} ब्लॉक) का उपयोग किया जा सकता है, जब तक कि कुछ पर्यावरणीय स्थिति (जैसे कि टूटी सॉकेट या टूटी डिस्क) रास्ते में हो जाता है





resharper