【问题标题】:C# Test ResourcesC# 测试资源
【发布时间】:2013-03-11 19:11:35
【问题描述】:

我正在使用 Microsoft Visual Studio 测试框架,我的一些测试需要一个 xml 文件作为输入。 目前,我已将它们放在我的 TestProject 中的资源目录下,并且我正在通过“..\..\whatever”路径名访问它们。我想在使用测试资源文件时获得一个良好实践的建议,因为我想在所有这些情况下重用我的测试 - 直接来自 VS 2010 - 在我在服务器上的构建过程中 - 在持续集成环境中 以透明(简单)的方式。

【问题讨论】:

    标签: c# unit-testing


    【解决方案1】:

    首先,我通常会尝试在测试期间完全减少对文件系统的依赖(通过为文件系统引入某种抽象,以便可以模拟文件系统访问)。

    如果这不可行,我会将此类文件包含在测试项目中,位于名为 TestData 或类似名称的子文件夹中。然后我将“复制到输出目录”设置为“始终复制”,以便该文件包含在输出中,并且位于与测试程序集相关的已知位置(无论构建是否在 Visual Studio 或构建服务器上)。只要没有被测试的代码正在修改文件,这非常有效,但只需要它们来读取数据。

    【讨论】:

    • 您在哪里将复制到输出目录设置为始终复制?在每个文件上,或者您可以在目录上全局设置它?
    • @Terenzio:我认为您需要在单个文件上进行设置。我认为您可以通过在解决方案资源管理器中选择一系列文件来一次性完成此操作(现在无法检查:现在没有 Visual Studio)。
    • VS2010:还将构建操作文件属性设置为“无”。
    【解决方案2】:

    我会建议以下answer 的方法。这是一个类似的问题。 这种方法利用了DeploymentItem 属性,在进行数据驱动的单元测试时也会用到。

    【讨论】:

      【解决方案3】:

      我在我的一个集成测试中做了这样的事情;我已经以与您相同的方式解决了它。只要您的文件被检入源代码管理,并且您使用相对路径(看起来像您),它就应该按预期工作。

      【讨论】:

        【解决方案4】:

        我们将 TFS2010 用于 CI。将所有输出文件放入 Binaries 文件夹。对于像 XML 这样的配置资源,我们使用 Copy to output directory 选项作为 Copy always。所以它会一直放在输出目录中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-06-23
          • 2011-04-13
          • 2015-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多