我有一个项目有多个.exe并且还有多个.config文件。该项目位于.Net Framework和它的Windows应用程序中。我为Nunit Testing构建了这个项目。我必须在配置文件中定义一些键。所以我想知道我怎么知道Nunit正在使用哪个配置文件?没有app.config文件。所有配置文件的名称都不是app.config。
答案 0 :(得分:2)
尝试获取当前的Configuration
对象:
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
然后config.FilePath
将告诉您加载了哪个.config文件。
<强>更新强>
FilePath
属性返回的值是当前程序集的默认位置。由于当前程序集由NUnit加载,因此这不是您的应用程序通常使用的位置。
要解决您的问题,您可以
始终从您提供的位置加载配置:
Configuration config = ConfigurationManager.OpenExeConfiguration(path);
使用NUnit将测试配置文件复制到您在文件路径中找到的位置:
File.Copy(testConfigFile, config.FilePath);
使用NUnit设置您要在测试中测试的密钥:
ConfigurationManager.AppSettings.Add("key", "value");
答案 1 :(得分:2)
实际上我正在使用NUnit 2.6.2在.config文件中使用这些行进行单元测试
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<!-- The ApartmentState value here is ignored. -->
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>
但是NUnit 2.6不再从测试配置文件中读取设置。所以你需要在Assemblyinfo.cs文件中添加属性[assembly:NUnit.Framework.RequiresSTA]。
答案 2 :(得分:0)
您需要做的是创建方法来打开配置文件并更新值,而不是再次保存。您可能必须将它保存在两个地方,因为NUnit不会读取您的实际配置文件。如果需要根据文件中更新的值断言预期值,您可以使用第二个进行测试。你也可以看一下嘲笑某些外部依赖。因为NUnit应该真正测试你正在使用的类。