【问题标题】:How can you use "external" configuration files (i.e. with configSource) with an MSTest unit test project?如何在 MSTest 单元测试项目中使用“外部”配置文件(即使用 configSource)?
【发布时间】:2010-09-14 06:00:24
【问题描述】:

为简单起见,我通常将很多配置(即 app.config 和 web.config 的内容)拆分为单独的 .config 文件,然后使用“configSource”属性从主配置文件中引用它们。例如:

<appSettings configSource="appSettings.config"/>

然后将所有键/值对放在该 appSettings.config 文件中,而不是将其内嵌在主配置文件中:

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

这通常适用于应用程序本身,但我在尝试编写单元测试时遇到问题,无论出于何种原因,需要从存储在这些外部文件之一中的配置部分获取某个值。 (我知道其中大多数可能会被视为“集成测试”,因为它们依赖于配置系统,而且我也确实有“纯单元测试”,但这些不是问题。我真的在寻找测试这些配置值是否被正确检索并以正确的方式影响行为)。

由于 MSTest 如何编译并将输出复制到与每次测试运行不同的看起来很模糊的文件夹(而不是您可能认为的“bin”文件夹),它似乎永远无法找到那些外部文件在执行测试时。我已经尝试过使用后期构建操作来完成这项工作,但没有运气。有没有办法在运行时将这些外部文件复制到正确的输出文件夹中?

【问题讨论】:

    标签: .net unit-testing mstest


    【解决方案1】:
    1. 把它写在你的连接字符串中。第一个 ConnectionString.config 不存在。

      "

    2. 以管理员权限打开命令提示符 (CMD)。

    3. 在 bin/debug 文件夹中创建一个名为 ConnectionString.config 的符号链接。

    C:\Windows\Systems32> mklink "C:\Link To Folder\....\ConnectionString.config" "C:\Users\Name\Original Folder\.....\...\Secure ConnectionString.config"

    最后它在指定位置创建 ConnectionString 配置文件。并成功运行。

    【讨论】:

      【解决方案2】:

      尝试在 Visual Studio 之外运行测试时,测试运行配置有点尴尬。

      对于使用 MSTest 执行命令行,保持“干净”变得相当麻烦。 它们也是解决方案的“全局”,因此将为每个测试项目复制外部文件。

      我更喜欢DeploymentItem 属性。

      [TestMethod]
      [DeploymentItem(@"test_data.file")]
      public void FooTest()
      {...}
      

      使测试独立于 .testrunco​​nfig 文件。

      【讨论】:

        【解决方案3】:

        找到了:

        如果您编辑测试运行配置(通过在添加新单元测试时双击放入“解决方案项目”解决方案文件夹的 .testrunco​​nfig 文件),您会看到一个测试运行配置对话框。那里有一个名为“部署”的部分,您可以在其中指定解决方案中任何位置的文件或整个文件夹,这些文件或整个文件夹可以在运行时与已编译的程序集一起复制到正确的文件夹中。

        通过这种方式,我现在实际上可以在一组外部 .config 文件中定义我的大部分配置,并在每次测试运行时自动将它们复制出来。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        相关资源
        最近更新 更多