Возможно ли, чтобы SelectNodes в XmlDocument возвращал значение null?

StackOverflow https://stackoverflow.com/questions/57518

Вопрос

Возможно ли это для SelectNodes() призвал XmlDocument вернуть ноль?

Мое затруднительное положение заключается в том, что я пытаюсь достичь 100% покрытия кода модульными тестами;ReSharper сообщает мне, что мне нужно защититься от нулевого возврата из SelectNodes() метод, но я не вижу возможности, чтобы XmlDocument мог возвращать значение null (и, следовательно, нет способа проверить мое защитное предложение и достичь 100% покрытия модульным тестом!)

Это было полезно?

Решение

Нужно ли достигать 100% покрытия кода?Действительно, возможно ли это вообще при нормальном (т.контролируемые, проверяемые) обстоятельства?

Мы часто обнаруживаем, что использование конструкций «синтаксического сахара», таких как using {} блоке создаются «скрытые» пути кода (скорее всего finally {} или catch {} блоки), которые нельзя использовать, если не мешает какое-либо состояние окружающей среды (например, сломанный сокет или сломанный диск).

Другие советы

Если посмотреть на Reflector, то метод SelectNodes() базового класса XmlDocument, XmlNode, может возвращать значение NULL, если его попытка создать навигатор возвращает значение NULL.CreateNavigator() довольно сложен и в некоторых случаях действительно возвращает значение null.Эти обстоятельства, по-видимому, связаны с некорректным XML-документом - так что это ваш тестовый пример сбоя SelectNodes().

Если вы вызываете SelectNodes для самого XmlDocument, и это действительно XmlDocument, а не производный класс, тогда SelectNodes не вернет значение null.

Если вы создадите класс-потомок и переопределите метод CreateNavigator(XmlNode), тогда SelectNodes может вернуть значение null.

Аналогично, если вы вызываете SelectNodes на узле EntityReference, DocumentType или XmlDeclaration, вы также получите значение null.

Короче говоря, для 100% покрытия XmlDocument или XmlNode, который вы не просто создали, вам необходимо проверить значение null.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top