هل من الممكن SelectNodes على XmlDocument إلى العودة فارغة?
-
09-06-2019 - |
سؤال
هل من الممكن SelectNodes()
اتصل على XmlDocument
إلى العودة فارغة?
المأزق هو أن أحاول أن تصل إلى 100 ٪ اختبار الوحدة البرمجية التغطية ؛ ReSharper يقول لي أنني في حاجة إلى حماية فارغة العودة من SelectNodes()
طريقة, ولكن أستطيع أن أرى مستحيل أن XmlDocument يمكن إرجاع null (و بالتالي ليس هناك طريقة لاختبار حارس بلدي شرط و تصل إلى 100 ٪ اختبار وحدة التغطية!)
المحلول
هل من الضروري أن تصل إلى 100% مدونة التغطية ؟ في الواقع, هل من الممكن العادية (أييمكن السيطرة عليها ، قابلة للاختبار) الظروف ؟
ونحن في كثير من الأحيان تجد أن استخدام "نحوي السكر" الانشاءات مثل using {}
كتلة هناك "خفية" مسارات التعليمات البرمجية التي تم إنشاؤها (على الأرجح finally {}
أو catch {}
كتل) التي لا يمكن أن تمارس إلا في بعض الظروف البيئية (مثل كسر مأخذ أو تقسيم القرص) يحصل في الطريق.
نصائح أخرى
تبحث في العاكس ، SelectNodes (طريقة) على XmlDocument قاعدة الطبقة ، XmlNode ، ويمكن العودة لاغية إذا كان محاولة لخلق الملاح إرجاع null.CreateNavigator() هي معقدة جدا و سوف تعود في الواقع فارغة تحت بعض الظروف.هذه الظروف تظهر أن حوالي تالف مستند XML - لذلك هناك حالة اختبار فشل SelectNodes().
إذا كنت تتصل SelectNodes على XmlDocument نفسه هو حقا XmlDocument وليس فئة مشتقة من SelectNodes لن تعود فارغة.
إذا قمت بإنشاء سليل الطبقة تجاوز CreateNavigator(XmlNode) الطريقة ثم SelectNodes يمكن أن تعود فارغة.
وبالمثل ، إذا كنت استدعاء SelectNodes على EntityReference, DocumentType أو XmlDeclaration عقدة ستحصل على باطل وكذلك
باختصار ، من أجل تغطية 100 ٪ على XmlDocument أو XmlNode لم تخلق فقط عليك الاختبار على باطل.