1

我有一个项目有多个 .exe,也有多个 .config 文件。该项目位于 .Net Framework 中,它是 Windows 应用程序。我已经为 Nunit 测试构建了这个项目。我必须在配置文件中定义一些键。所以我想知道我怎么知道 Nunit 正在使用哪个配置文件?没有 app.config 文件。所有名称都不是 app.config 的配置文件。

4

3 回答 3

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");

于 2013-02-01T14:29:51.103 回答
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] 。

于 2013-02-05T14:00:17.147 回答
0

您要做的是创建方法来打开配置文件并更新值而不是再次保存。您可能必须将它保存在两个地方,因为 NUnit 不会读取您的实际配置文件。如果需要根据文件中更新的值断言预期值,您可以使用第二个用于测试目的。此外,您可能想考虑模拟某些外部依赖项。因为 NUnit 真的应该测试你正在使用的类。

于 2013-02-05T03:58:22.370 回答