Unit Testing mehrere App.config laden

03/12/2007 - 18:17 von froorider | Report spam
Hallo NG,

ich habe folgendes Problem:
Ich habe in eine Solution mit mehreren Projekten. Eines dieser
Projekte ist das "Unit Testing Projekt" welches den einzelnen
Testklassen eine Heimat bietet.

Nun haben die diversen Projekte natürlich eigene App.config - Files.
Auch das "Testprojekt" hat ein eigenes App.Config. Ich muss momentan
in diesem App.config alle Eintràge verdoppeln, um meine Tests
durchführen zu können. Die jeweiligen zu-testenden-klassen laden sich
Eintràge / Einstellungen per ConfigurationManager.

Frage: Gibt es eine Möglichkeit das projektbezogene App.config zu
laden? Dann muss ich nicht immer mehrere files manuell synchron
halten.

Ich habe schon folgendes versucht in einer Testklasse:

[ClassInitialize()]
[DeploymentItem("Original.exe.config")]
public static void MyClassInitialize(TestContext testContext)
{
// Get the additional config - file path
string configFilePath System.IO.Path.Combine(Environment.CurrentDirectory, "Original.exe");

// Load the configuration files.
System.Configuration.Configuration runningConfiguration
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

additionalConfiguration ConfigurationManager.OpenExeConfiguration(configFilePath);

//Parse the additional configuration and add the appConfig-settings
to the current configuration
KeyValueConfigurationCollection appsettings additionalConfiguration.AppSettings.Settings;
foreach (String key in appsettings.AllKeys)
{
runningConfiguration.AppSettings.Settings.Add(key,
appsettings[key].Value.ToString());
Console.WriteLine("KEY: {0} Value:{1}", key,
appsettings[key].Value.ToString());
}

// Force a reload of a changed section.
runningConfiguration.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection("appSettings");

LoggingConfiguration.Configure();
serverMockup = new XMLRPCServerMockup();
serverMockup.InitMockup();
}

Wenn man nun in einer Testmethode einen zusàtzlichen / neuen Eintrag
laden will (z.b. ConfigurationManager.AppSettings["DEVICE_URL"] ) dann
ist der Eintrag null!

Hat jemand damit schon Erfahrung gesammelt? Wie ihr im Code sehen
könnt, versuche ich nur appSettings Eintràge zu verarbeiten.

Gruss

Thomas
 

Lesen sie die antworten

#1 Albert Weinert
03/12/2007 - 20:17 | Warnen spam
"froorider" schrieb

Frage: Gibt es eine Möglichkeit das projektbezogene App.config zu
laden? Dann muss ich nicht immer mehrere files manuell synchron
halten.



Ich kapsele den Zugriff auf die AppSettings. Ich mache mir ein
entsprechendes Interface für die Settings und kann ich entweder eine Klasse
implementieren die über die AppSettings geht. Für Tests Mocke ich diese
meist und könnte noch eine Klasse erstellen die die Settings irgendwoher
bezieht und somit für mehrere Projekte gelten kann.

Freundliche Grüße

Albert

Ähnliche fragen