SelectNodes()
在 XmlDocument
上被调用时能否返回 null?
我的问题是我正在努力达到100%的单元测试代码覆盖率;ReSharper告诉我需要防范 SelectNodes()
方法返回 null,但我无法想象 XmlDocument 如何会返回 null(因此,也就无法测试我的防范措施并达到100%的单元测试覆盖率!)
SelectNodes()
在 XmlDocument
上被调用时能否返回 null?
我的问题是我正在努力达到100%的单元测试代码覆盖率;ReSharper告诉我需要防范 SelectNodes()
方法返回 null,但我无法想象 XmlDocument 如何会返回 null(因此,也就无法测试我的防范措施并达到100%的单元测试覆盖率!)
查看Reflector,XmlDocument基类XmlNode上的SelectNodes()方法在尝试创建导航器时可能返回null。CreateNavigator()相当复杂,确实会在某些情况下返回null。这些情况似乎与格式不正确的XML文档有关 - 因此这是SelectNodes()失败的测试用例。
是否有必要达到100%的代码覆盖率?在正常(即可控、可测试)情况下,这甚至可能不可能实现吗?
我们经常发现使用“语法糖”构造,如 using {}
块,会创建“隐藏”的代码路径(最可能是 finally {}
或 catch {}
块),除非某些环境条件(如损坏的套接字或损坏的磁盘)妨碍了它们的运行,否则无法执行。
null
,但仅适用于某些类型的XmlNode(不包括XmlDocument)。因此,据我所见,如果您已加载了XmlDocument并且在解析时没有抛出异常,则CreateNavigator()永远不会返回null
,因此SelectNodes()也永远不会返回null
。 - Daniel Fortunov