使用nunit重新加载app.config

Kar*_*ten 11 .net c# nunit app-config

我有多个NUnit测试,我希望每个测试都使用特定的app.config文件.有没有办法在每次测试之前将配置重置为新的配置文件?

小智 8

尝试:

/* Usage
 * using(AppConfig.Change("my.config")) {
 *   // do something...
 * }
 */
public abstract class AppConfig : IDisposable
{
    public static AppConfig Change(string path)
    {
        return new ChangeAppConfig(path);
    }
    public abstract void Dispose();

    private class ChangeAppConfig : AppConfig
    {
        private bool disposedValue = false;
        private string oldConfig = Conversions.ToString(AppDomain.CurrentDomain.GetData("APP_CONFIG_FILE"));

        public ChangeAppConfig(string path)
        {
            AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path);
            typeof(ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static).SetValue(null, 0);
        }

        public override void Dispose()
        {
            if (!this.disposedValue)
            {
                AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", this.oldConfig);
            typeof(ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static).SetValue(null, 0);
                this.disposedValue = true;
            }
            GC.SuppressFinalize(this);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用(使用.NET 4.0).我不得不延长它,请在此处查看我的答案:http://stackoverflow.com/questions/6150644/change-default-app-config-at-runtime/6151688#6151688 (2认同)