Tôi có nhiều thử nghiệm NUnit và tôi muốn mỗi thử nghiệm sử dụng tệp app.config cụ thể. Có cách nào để đặt lại cấu hình cho tệp cấu hình mới trước mỗi lần kiểm tra không?Tải lại app.config với nunit
Trả lời
Hãy thử:
/* 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);
}
}
}
Nếu bạn phát hành là bạn cho các tập hợp khác nhau của các trường hợp thử nghiệm cần phải có cấu hình khác nhau, bạn có thể có các dự án thử nghiệm khác nhau với một tập tin cấu hình cho mỗi. Sau đó chạy từng dự án thử nghiệm của bạn.
một dự án mỗi bài kiểm tra? – apollodude217
I answered a similar question cho Powershell. Kỹ thuật tương tự nên làm việc ở đây, chỉ cần gọi sau khi bắt đầu thử nghiệm của bạn:
System.AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath)
EDIT: Trên thực tế trông như thế này là phức tạp hơn trong một exe biên soạn - bạn cần làm something like this để có được cấu hình được tải lại.
- 1. Vấn đề với NUnit và app.config
- 2. Làm cách nào để tải lại/làm mới app.config?
- 3. Đang tải app.config vào AppDomain
- 4. Microsoft PEX với NUnit
- 5. Sự cố khi đọc chuỗi kết nối từ App.Config khi sử dụng NUnit 2.5.2
- 6. Sử dụng app.config với thư viện lớp
- 7. NUnit với Windows Phone 7
- 8. được NUnit so với MSTest
- 9. NUnit với VS2010 và MVC3
- 10. Tích hợp NUnit với teamcity
- 11. Khởi chạy NUnit từ Visual Studio không thể tải nunit.uikit.XmlSerializers
- 12. NUnit FileNotFoundException: System.Configuration
- 13. Tải các phần của App.Config từ một tệp khác
- 14. Cài đặt nUnit với ASP.Net MVC 1.0
- 15. Javascript - tải lại trang với QueryString
- 16. Unicorn không tải lại với USR2
- 17. NUnit không hoạt động tốt với Assert.AreEqual
- 18. Kiểm tra Windows Forms logic với NUnit
- 19. PowerShell App.Config
- 20. App.config cho dll
- 21. App.config cho Xunit
- 22. Thử nghiệm đơn vị với Moq, Silverlight và NUnit
- 23. NUnit DeploymentItem
- 24. C# app.config trong winform
- 25. Cách tải lại TreeStore?
- 26. Nhận ConnectionString từ app.config
- 27. MbUnit vs Nunit
- 28. WCF Service app.config
- 29. Tải lại UITableViewData chậm
- 30. Tải lại AVMutableComposition
Điều này dường như hoạt động hoàn hảo. Bạn sẽ rất tử tế để giải thích những gì nó thực sự làm gì? :-) – Karsten
Điều này không hiệu quả đối với tôi (sử dụng .NET 4.0). Tôi đã phải mở rộng nó, xin vui lòng xem câu trả lời của tôi ở đây: http://stackoverflow.com/questions/6150644/change-default-app-config-at-runtime/6151688#6151688 –