Existe-t-il un moyen d'obtenir une instance System.Configuration.Configuration basée sur du XML arbitraire ?

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

Question

J'essaie de tester unitairement une ConfigurationSection personnalisée que j'ai écrite et j'aimerais charger du XML de configuration arbitraire dans un Système.Configuration.Configuration pour chaque test (plutôt que de mettre le fichier XML de configuration du test dans le fichier Tests.dll.config.Autrement dit, j'aimerais faire quelque chose comme ceci :

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

Cependant, il semble Panneau de configuration ne vous donnera que les instances de configuration associées à un fichier EXE ou à une configuration de machine.Existe-t-il un moyen de charger du XML arbitraire dans une instance de configuration ?

Était-ce utile?

La solution

Il y a en fait un moyen que j'ai découvert....

Vous devez définir une nouvelle classe héritant de votre section de configuration d'origine comme suit :

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


Vous pouvez ensuite instancier votre objet ConfigurationSection comme suit :

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

J'espère que ça aidera quelqu'un :-)

Autres conseils

Je pense que ce que vous recherchez est ConfigurationManager.OpenMappedExeConfiguration

Il vous permet d'ouvrir un fichier de configuration que vous spécifiez avec un chemin de fichier (encapsulé dans un ExeConfigurationFileMap)

Si ce que dit l'autre affiche est vrai et que vous ne souhaitez pas créer un tout nouveau fichier XML à des fins de test, je vous recommande de mettre vos modifications de configuration dans la méthode de test elle-même, puis d'exécuter vos tests sur la configuration fraîchement modifiée. données.

En regardant les membres de la classe, je dirais que la réponse est probablement non*.Je ne sais pas pourquoi vous voudriez faire cela de toute façon, plutôt que de créer votre propre fichier de configuration XML.

*Ce n'est pas le cas, à l'exception des hacks de réflexion désordonnés

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