14

我正在尝试对我编写的自定义 ConfigurationSection 进行单元测试,并且我想将一些任意配置 XML 加载到每个测试的System.Configuration.Configuration中(而不是将测试配置 xml 放在 Tests.dll 中。配置文件。也就是说,我想做这样的事情:

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

但是,看起来ConfigurationManager只会为您提供与 EXE 文件或机器配置相关联的配置实例。有没有办法将任意 XML 加载到配置实例中?

4

3 回答 3

17

实际上我发现了一种方法....

您需要定义一个继承自原始配置部分的新类,如下所示:

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


然后,您可以按如下方式实例化您的 ConfigurationSection 对象:

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

希望它可以帮助某人:-)

于 2009-04-01T09:47:59.623 回答
1

我认为您正在寻找的是 ConfigurationManager。OpenMappedExe配置

它允许您打开使用文件路径指定的配置文件(包装在ExeConfigurationFileMap 中

如果另一张海报说的是真的,并且您不希望创建一个全新的 XML 文件进行测试,那么我建议您将配置编辑放在测试方法本身中,然后针对新更改的配置运行测试数据。

于 2008-08-24T09:02:25.853 回答
0

看看班上的成员,我会说答案可能是否定的*。我不确定您为什么要这样做,而不是创建自己的 XML 配置文件。

*不,不包括凌乱的反射黑客

于 2008-08-21T20:02:26.370 回答