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!)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top