È possibile che SelectNodes su un XmlDocument per restituire null?
-
09-06-2019 - |
Domanda
È possibile SelectNodes()
chiamato in un' XmlDocument
per restituire null?
La mia situazione è che sto cercando di raggiungere il 100% di test delle unità di codice di copertura;ReSharper mi dice che ho bisogno di proteggersi da un null ritorno dall' SelectNodes()
il metodo, ma riesco a vedere alcun modo che un XmlDocument restituisce null (e di conseguenza, nessun modo per testare la mia guardia clausola e raggiungere il 100% di copertura di unit test!)
Soluzione
E ' necessario raggiungere il 100% di copertura codice?Anzi, è anche possibile in condizioni normali (cioècontrollabile, verificabile) circostanze?
Spesso troviamo che l'uso di "zucchero sintattico" costruzioni, come il using {}
blocco, ci sono "nascosti" percorsi di codice creato (più probabile finally {}
o catch {}
blocchi) che non possono essere esercitati, a meno di alcune condizioni ambientali (come una presa rotti o spezzati disco) ottiene nel modo.
Altri suggerimenti
Guardando Riflettore, SelectNodes() metodo di XmlDocument base della classe, XmlNode, restituisce null se il suo tentativo di creare un navigatore restituisce null.CreateNavigator() è piuttosto complesso e, infatti, restituisce null in un paio di circostanze.Tali circostanze sembrano essere di circa un XML non valido documento - così c'è il banco di prova per il fallimento di SelectNodes().
Se si chiama SelectNodes sul XmlDocument stesso ed è davvero un XmlDocument e non una classe derivata di SelectNodes non restituirà null.
Se si crea una classe discendente e ignorare il CreateNavigator(XmlNode) metodo, quindi, SelectNodes potrebbe restituire null.
Allo stesso modo, se si chiama SelectNodes su un EntityReference, DocumentType o XmlDeclaration nodo, si otterrà null,
In breve, per la copertura del 100% su un XmlDocument o XmlNode non solo di creare, è necessario per il test di null.