Question

Est-il possible pour SelectNodes() a fait appel à un XmlDocument retourner null ?

Mon problème est que j'essaie d'atteindre une couverture de code de test unitaire à 100 % ;ReSharper me dit que je dois me prémunir contre un retour nul du SelectNodes() méthode, mais je ne vois aucun moyen pour qu'un XmlDocument puisse renvoyer null (et donc, aucun moyen de tester ma clause de garde et d'atteindre une couverture de tests unitaires à 100 % !)

Était-ce utile?

La solution

Est-il nécessaire d’atteindre une couverture de code à 100 % ?En effet, est-ce même possible dans des conditions normales (c.-à-d.des circonstances contrôlables, testables) ?

Nous constatons souvent qu'en utilisant des constructions en « sucre syntaxique » comme using {} bloc, des chemins de code "cachés" sont créés (très probablement finally {} ou catch {} blocs) qui ne peuvent pas être exercés à moins qu'une condition environnementale (comme un socket cassé ou un disque cassé) ne fasse obstacle.

Autres conseils

En regardant Reflector, la méthode SelectNodes() sur la classe de base de XmlDocument, XmlNode, peut renvoyer null si sa tentative de création d'un navigateur renvoie null.CreateNavigator() est assez complexe et renverra effectivement null dans certaines circonstances.Ces circonstances semblent concerner un document XML mal formé - voici donc votre scénario de test pour l'échec de SelectNodes().

Si vous appelez SelectNodes sur le XmlDocument lui-même et qu'il s'agit réellement d'un XmlDocument et non d'une classe dérivée, SelectNodes ne renverra pas null.

Si vous créez une classe descendante et remplacez la méthode CreateNavigator(XmlNode), SelectNodes pourrait renvoyer null.

De même, si vous appelez SelectNodes sur un nœud EntityReference, DocumentType ou XmlDeclaration, vous obtiendrez également null

En bref, pour une couverture à 100 % sur un XmlDocument ou un XmlNode que vous n'avez pas simplement créé, vous devez tester null.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top