【问题标题】:Testing a DLL with NUnIt-How to know which config file is being used使用 NUnIt 测试 DLL - 如何知道正在使用哪个配置文件
【发布时间】:2013-01-16 21:19:52
【问题描述】:

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

【问题讨论】:

    标签: .net nunit app-config


    【解决方案1】:

    尝试获取当前的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");

    【讨论】:

    • 嗨,我没有找到“config.FullPath”,但有一个属性“config.FilePath”。但是当我使用 config.FilePath 属性时,它会将路径返回为 dllName+.config (像 d:\abc.dll.config) 而没有这种类型的配置文件存在。我通过选择一个 dll 来运行 NUnit 测试。所以请帮助我。谢谢,Banketeshvar Narayan
    • 实际上我使用的是 NUnit 2.6,我发现 NUnit 2.6 不再从您的测试配置文件中读取设置我使用的这些行不适用于 Nunit 2.6.2。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      实际上我使用 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]。

      【讨论】:

        猜你喜欢
        • 2023-02-04
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        相关资源
        最近更新 更多