Domanda

Sto provando a testare un'unità di configurazione personalizzata che ho scritto e vorrei caricare un XML di configurazione arbitrario in un Sistema.Configurazione.Configurazione per ogni test (invece di inserire l'xml di configurazione del test nel file Tests.dll.config.Cioè, mi piacerebbe fare qualcosa del genere:

Configuration testConfig = new Configuration("<?xml version=\"1.0\"?><configuration>...</configuration>");
MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection");
Assert.That(section != null);

Tuttavia, sembra Gestore della configurazione ti fornirà solo le istanze di configurazione associate a un file EXE o alla configurazione di una macchina.Esiste un modo per caricare XML arbitrario in un'istanza di configurazione?

È stato utile?

Soluzione

In realtà c'è un modo che ho scoperto....

È necessario definire una nuova classe che eredita dalla sezione di configurazione originale come segue:

public class MyXmlCustomConfigSection : MyCustomConfigSection
{
    public MyXmlCustomConfigSection (string configXml)
    {
        XmlTextReader reader = new XmlTextReader(new StringReader(configXml));
        DeserializeSection(reader);
    }
}


Puoi quindi creare un'istanza del tuo oggetto ConfigurationSection come segue:

string configXml = "<?xml version=\"1.0\"?><configuration>...</configuration>";
MyCustomConfigSection config = new MyXmlCustomConfigSection(configXml);

Spero che aiuti qualcuno :-)

Altri suggerimenti

Penso che quello che stai cercando sia ConfigurationManager.OpenMappedExeConfigurazione

Ti consente di aprire un file di configurazione specificato con un percorso file (racchiuso all'interno di un file ExeConfigurationFileMap)

Se ciò che ha detto l'altro utente è vero e non desideri creare un file XML completamente nuovo per il test, ti consiglio di inserire le modifiche alla configurazione nel metodo di test stesso, quindi eseguire i test sulla configurazione appena modificata dati.

Osservando i membri della classe, direi che probabilmente la risposta è no*.Non sono sicuro del motivo per cui vorresti farlo comunque, piuttosto che creare il tuo file di configurazione XML.

*No, esclusi i trucchi di riflessione disordinati

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