XmlDocument上的SelectNodes是否可以返回null?

Dan*_*nov 8 .net xml resharper unit-testing

是否可以SelectNodes()调用a XmlDocument返回null?

我的困境是我试图达到100%的单元测试代码覆盖率; ReSharper告诉我,我需要防止该SelectNodes()方法的null返回,但我看不出XmlDocument可以返回null(因此,无法测试我的guard子句并达到100%的单元测试覆盖率!)

Jes*_*cer 10

查看Reflector,XmlDocument的基类XmlNode上的SelectNodes()方法如果尝试创建导航器返回null,则返回null.CreateNavigator()非常复杂,在某些情况下确实会返回null.这些情况似乎是一个格式错误的XML文档 - 所以你的测试用例是SelectNodes()的失败.

  • 我认为CreateNavigator()返回`null`但仅适用于某些类型的XmlNode(不包括XmlDocument).所以,据我所知,如果你已经加载了一个XmlDocument并且它在解析时没有抛出,那么CreateNavigator()将永远不会返回`null`,因此SelectNodes()永远不会返回`null` (2认同)

Jer*_*Gee 2

代码覆盖率有必要达到100%吗?事实上,在正常(即可控、可测试)情况下这是否可能?

我们经常发现,使用像using {}块这样的“语法糖”结构,会创建一些“隐藏”代码路径(很可能finally {}catch {}块),除非某些环境条件(例如损坏的套接字或损坏的磁盘)进入系统,否则无法执行这些路径。方式。