我正在尝试对已编写的自定义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文件或计算机配置关联的Configuration实例。 有没有一种方法可以将任意XML加载到Configuration实例中?

===============>>#1 票数:15 已采纳

实际上,我已经找到了一种方法。

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

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

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

===============>>#2 票数:1

我认为您正在寻找的是ConfigurationManager。 OpenMappedExeConfiguration

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

如果其他提示者说的是正确的,并且您不想创建一个全新的XML文件进行测试,那么我建议您将“配置”编辑内容放入“测试”方法本身,然后针对新更改的配置运行测试数据。

===============>>#3 票数:0

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

*不是,不包括混乱的反射黑客

  ask by Matt translate from so

未解决问题?本站智能推荐:

1回复

从外部配置文件中读取appSettings的一部分

我想从一个名为secrets.config的外部配置文件中读取我的控制台应用程序的appSettings的一部分,而其余的我想从app.config读取。 目前,我有这个设置,但它似乎不是从secrets.config读取,它甚至没有告诉我有关读取失败的信息。 在我的app.conf
4回复

在.NET中运行时合并自定义配置节

我的问题是关于使用标准.NET配置对象和自定义配置元素(可以通过扩展System.Configuration.ConfigurationSection类来定义)。 我们通常从System.Configuration.ConfigurationManager类的方法中获取这些, GetSecti
3回复

在运行时修改app.config 部分

我需要在运行时修改app.config的<configuration><system.diagnostics>部分,以便我可以: 在<sharedListeners>元素下添加一个CustomTraceListener ,这需要特殊的initiali
2回复

从Spring.NET xml配置访问ConfigurationManager.AppSettings值

我有一个要求,要求我使用Spring.net来获取存储在app.config中的连接字符串,然后将检索到的连接字符串注入实例化的对象。 我怎么能用Spring.net的xml配置呢? 例如,而不是我的代码执行此操作: // Spring.net config: <object
1回复

你需要“关闭”.net配置

创建配置对象以管理.net配置文件时,是否需要关闭文件。 我有一个带有几个.dll组件的应用程序。 我是否必须使用全局配置以避免将其他.dll所做的更改写入同一配置文件。 我是否知道在从另一个模块更改同一配置文件之前需要关闭/处置此配置。
2回复

何时使用部分优先于自定义配置部分?

在创建应用程序或库的配置时,我通常更喜欢在<appSettings>部分使用自定义配置部分,原因如下。 框架序列化到用户定义的配置对象; 每个配置值都有适当的类型 可以针对具有属性的类型和值范围验证配置值 鉴于此,何时我想使用<appSettings
5回复

如何从命令行参数中选择.Net应用程序配置文件?

我想通过传递命令行参数来覆盖标准app.config的使用。 如何更改默认应用程序配置文件,以便在访问ConfigurationManager.AppSettings时访问命令行中指定的配置文件? 编辑: 事实证明,加载与EXE加上.config名称不同的配置文件的正确方法是使用O
1回复

使用ConfigurationManager.OpenMappedExeConfiguration时,如何从ConfigSection中获取定义为NameValueSectionHandler的值

当您使用应用程序的当前配置文件时,从使用System.Configuration.NameValueSectionHandler定义的部分的配置文件中获取值很容易。 示例配置文件。 示例代码,可以轻松读取它。 这是不起作用的代码。 在编译时失败并出现以下错误。
5回复

C#读取配置设置

我有一个C#类库A,它的App.config中有一些配置设置我用它来访问它们 但是当我从ASP Web项目B调用方法1()时,它无法在类库A中找到配置设置 知道这里发生了什么吗?
1回复

加载配置文件时出现错误,参数无效

我有一个安装程序类,正在从Visual Studio安装项目中检索参数。现在在打开exeConfiguration时出现以下错误。 这是我的Installer.cs代码。 请帮助我解决此错误,因为我无法弄清楚。 衷心欢迎任何建议。 提前致谢