Dot-Net
XmlDocument 上的 SelectNodes 是否有可能返回 null?
是否有可能
SelectNodes()被呼叫XmlDocument返回null?我的困境是我試圖達到 100% 的單元測試程式碼覆蓋率;ReSharper 告訴我,我需要防止該
SelectNodes()方法返回 null,但我看不出 XmlDocument 無法返回 null(因此,無法測試我的保護子句並達到 100% 的單元測試覆蓋率!)
查看反射器,如果嘗試創建導航器返回 null,則 XmlDocument 的基類 XmlNode 上的 SelectNodes() 方法可以返回 null。CreateNavigator() 非常複雜,在某些情況下確實會返回 null。這些情況似乎與格式錯誤的 XML 文件有關——因此您的測試案例是 SelectNodes() 失敗。
如果您在 XmlDocument 本身上呼叫 SelectNodes 並且它確實是 XmlDocument 而不是派生類,則 SelectNodes 將不會返回 null。
如果您創建後代類並覆蓋 CreateNavigator(XmlNode) 方法,則 SelectNodes 可能會返回 null。
同樣,如果您在 EntityReference、DocumentType 或 XmlDeclaration 節點上呼叫 SelectNodes,您也會得到 null
簡而言之,對於您不只是創建的 XmlDocument 或 XmlNode 的 100% 覆蓋,您必須測試 null。