Here is a unit test to show how to load configuration data from a custom configuration file (useful in unit tests)
private string configContents = @"<?xml version='1.0' encoding='utf-8'?>" + @"<configuration>" + @" <startup>" + @" <supportedRuntime version='v4.0' sku='.NETFramework,Version=v4.5.2'/>" + @" </startup>" + @" <appSettings>" + @"" + @" <add key='intValue' value='42' />" + @" <add key='stringValue' value='blah, blah, blah' />" + @"" + @" </appSettings>" + @"</configuration>"; [Test] public void RawCustomConfigTest() { // Write out the test config file string exeDir = System.IO.Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath); string configPath = Path.Combine(exeDir, "Test.config"); File.WriteAllText(configPath, configContents, Encoding.UTF8); // Read it in SysConfig.ExeConfigurationFileMap map = new SysConfig.ExeConfigurationFileMap { ExeConfigFilename = configPath }; SysConfig.Configuration config = SysConfig.ConfigurationManager.OpenMappedExeConfiguration(map, SysConfig.ConfigurationUserLevel.None); var appSettings = config.AppSettings.Settings; // Read in the test entries string intValue = TryGetValue(appSettings, "intValue", "-1"); string stringValue = TryGetValue(appSettings, "stringValue", ""); string otherValue = TryGetValue(appSettings, "DoesNotExistInConfig", "not present"); // does not exist in the config file // Show that it worked Assert.That(intValue == "42"); Assert.That(stringValue == "blah, blah, blah"); Assert.That(otherValue == "not present"); } private static string TryGetValue(SysConfig.KeyValueConfigurationCollection appSettings, string name, string defaultValue) { try { return appSettings[name].Value; } catch (NullReferenceException) { return defaultValue; } }
No comments:
Post a Comment