我有多個NUnit測試,我希望每個測試都使用特定的app.config文件。 有沒有辦法在每次測試之前將配置重置爲新的配置文件?用nunit重新加載app.config
10
A
回答
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);
}
}
}
0
如果問題是您針對不同的測試用例集需要不同的配置,那麼您可以爲每個測試用例配置不同的測試項目。然後一次運行一個測試項目。
+0
一個項目? – apollodude217 2010-07-15 20:08:54
0
I answered a similar question for Powershell。同樣的技術也應該在這裏工作,只需調用在測試開始時的以下內容:
System.AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath)
編輯:其實看起來這是一個比較複雜編譯EXE中 - 你需要做的something like this爲了得到該配置重新加載。
相關問題
- 1. 如何重新加載/刷新app.config?
- 2. 使用Nunit和的app.config
- 3. NUnit的和App.config中
- 4. 使用Moq,NUnit和實體框架重新加載實體
- 5. 重新緩存App.Config
- 6. 重新加載div重新加載XML
- 7. 重新加載不重新加載
- 8. 重新加載Java Applet重新加載
- 9. 重新加載
- 10. 如何使用IPython重新加載和自動重新加載?
- 11. app.config刷新部分不重新載入appsettings部分
- 12. 將app.config加載到AppDomain中
- 13. 錯誤的app.config加載
- 14. 如何加載App.config文件?
- 15. 在運行時加載App.Config
- 16. 用javascript重新加載flash
- 17. 用jquery重新加載div
- 18. 用addOperationWithBlock重新加載TableView
- 19. NUnit延遲加載TestCaseSource
- 20. Nunit gui未找到app.config文件
- 21. 重新加載searchResultsTableView
- 22. 重新加載UIModalViewControllers
- 23. 重新加載tabbarviewcontroller
- 24. 重新加載UITableView
- 25. 重新加載AQGridview
- 26. 重新加載UITableView
- 27. 重新加載AVMutableComposition
- 28. 重新加載XPPageSelector
- 29. 重新加載UINavigationItem
- 30. 重新加載searchResultsTableView
這似乎工作完美。你會如此善意地解釋它實際上做了什麼? :-) – Karsten 2009-06-09 15:22:45