Ich habe mehrere NUnit-Tests, und ich möchte, dass jeder Test eine bestimmte app.config-Datei verwendet. Gibt es eine Möglichkeit, die Konfiguration vor jedem Test auf eine neue Konfigurationsdatei zurückzusetzen?Reload app.config mit Nunit
Antwort
Versuchen:
/* 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);
}
}
}
Wenn Sie angeben, dass Sie für verschiedene Sätze von Testfällen unterschiedliche Konfigurationen haben müssen, können Sie verschiedene Testprojekte mit einer Konfigurationsdatei für jeden haben. Führen Sie anschließend Ihre Testprojekte nacheinander aus.
ein Projekt pro Test? – apollodude217
I answered a similar question für Powershell. Die gleiche Technik soll hier arbeiten, rufen Sie einfach den folgende zu Beginn des Tests:
System.AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath)
EDIT: sieht tatsächlich wie dies komplizierter innerhalb eines kompilierten exe - Sie something like this in tun müssen, um zu bekommen Die Konfiguration wurde neu geladen.
- 1. Das Problem mit NUnit und app.config
- 2. Reload TableView mit Daten
- 3. Gulp mit Live-Reload
- 4. lesen app.config LINQ mit
- 5. NUnit für Integrationstests mit einer Klassenbibliothek verwendet
- 6. NUnit TestCase mit Generics
- 7. NUnit Integration mit teamcity
- 8. Testereignisse mit Nunit
- 9. Microsoft PEX mit NUnit
- 10. Feature-Dateiausführung mit NUnit
- 11. Reload Solr Kern mit curl
- 12. Reload jqGrid mit neuen Daten
- 13. Reload bestimmtes Element mit jQuery
- 14. Reload UITableViewController
- 15. Reload XPPageSelector
- 16. PROTRACTOR reload()
- 17. Dropzone reload
- 18. UIPickerView reload
- 19. Reload UIPickerView
- 20. Problem beim Lesen der Verbindungszeichenfolge von App.Config bei Verwendung von NUnit 2.5.2
- 21. App.config Problem
- 22. app.config Verrücktheit
- 23. Testen von Popups mit NUnit
- 24. Create NUnit Test mit Nachschärfer
- 25. Funktioniert NUnit mit .NET 3.5?
- 26. Verwenden von NUnit mit PCL
- 27. Nunit-Basisklasse mit allgemeinen Tests
- 28. NUnit Beispielcode?
- 29. NUnit & Antastwege
- 30. app.config Verschlüsselung
Das scheint perfekt zu funktionieren. Würdest du so freundlich erklären, was es eigentlich macht? :-) – Karsten
Dies funktionierte nicht für mich (mit .NET 4.0). Ich musste es erweitern, siehe meine Antwort hier: http://stackoverflow.com/questions/6150644/change-default-app-config-at-runtime/6151688#6151688 –