如何:为测试部署文件

在运行测试之前,测试和应用程序必须复制到他们可以运行的位置,以及它们所引用的其他程序集。 测试通常还需要其他文件 (如测试数据、配置文件、数据库和显式加载的程序集。 若要使这些其他文件可用于测试,必须指定它们将部署。

在何处测试运行?

Visual Studio 2012 可以运行在多个位置测试:

如何部署本地的测试文件?

这是最好的方法:

  1. 将文件复制到生成目标目录作为生成过程的一部分。

    • 如果这些特定于个测试项目,包括它们,当在 Visual Studio 的内容文件测试项目。 选择它们在解决方案资源管理器并将 复制到输出 属性设置为 如果较新则复制

    • 否则,请定义后期生成任务将文件复制到生成输出目录。 例如:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      打开项目属性测试项目。 在 C# 项目中,打开 生成事件 页。 在 Visual Basic 项目中,打开 编译 页并选择 生成事件。 添加复制命令到 后期生成事件 字段。

  2. 使用 DeploymentItemAttribute 测试方法或测试选件类指定应从生成输出目录复制到部署目录中的文件和文件夹。

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • 源 是复制的文件或目录。 路径可以是绝对的,或相对于生成输出目录。

    • targetFolder 是可选的。 它是源文件或目录要复制的内容。 路径可以是绝对的,或相对于部署目录中。 默认值为“。”,部署目录中。

      备注

      targetFolder 总是为内容,从文件路径。使用 DeploymentItem,不能更改文件的名称。

    可以使用属性在很多情况下,如果希望,因此,您可以将其测试方法或测试选件类。

    在中选择一组测试时运行,在其 DeploymentItem 特性指定的所有项目复制,在测试运行开始之前。

  3. 考虑运行单元测试直接将生成输出目录,因此,测试更快速地运行。 在注册了测试之后,这尤其有用在生成服务器上。

    为此,请将一 .runsettings 文件添加到您的解决方案,包括 <DeploymentEnabled>False</DeploymentEnabled>,然后选择在 测试的文件,测试设置 菜单。 相同的效果在任何在根本不使用哪 DeploymentItemAttribute 发生测试运行。

    但是,不能避免使用部署文件夹,如果使用的 .testsettings 文件,对于 web 是必需的,负载测试,编码的 UI 测试,因此,任何在哪些测试将应用程序部署到远程计算机。

何时使用名为 .testsettings 文件?

您不需要纯单元测试的一 .testsettings 文件测试。 如果不需要一个名为 .testsettings 文件,请不要使用的。 它生成单元测试的运行速度更慢,并且,它与第三方不兼容的测试框架。 考虑其他部署方式。

如果这些语句中的任何一个条件,需要一个名为 .testsettings 文件:

如果使用一个名为 .testsettings 文件,应用程序和测试程序集始终被复制到部署文件夹。

在名为 .testsettings 编辑的 部署 页可以指定数据文件和目录。 它们将复制到每一之前的部署文件夹中运行测试。 本页指定的项目路径始终相对于解决方案目录并始终在同应用程序的部署文件夹中部署并测试程序集。

如果要使用绝对路径或指定不同的目标目录,请打开包含 XML 编辑器和插入的 .testsettings 文件片段类似于:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory 可以是绝对或相对部署目录中。

何时使用单独的部署文件夹?

通过 Visual Studio,如果运行测试,部署文件夹中创建在 TestResults 下在您的解决方案文件夹。

使用单独的部署文件夹,如果有任何测试方法或选件类在测试具有 DeploymentItem 特性,或者,如果使用的 .testsettings 文件。

如果使用部署文件夹,以下文件和文件夹将复制到部署文件夹,在测试运行之前:

本地测试运行的部署文件夹

用于测试的本地部署文件夹

文件在部署,以及在什么顺序?

在测试,用任何测试开始之前,执行,所有文件都将部署复制。 测试是批测试启动由单个命令或计划的事件。 这意味着,如果指定为特定的部署数据文件测试方法,它还用于同一执行运行的其他可用的测试。

以下项按顺序进行复制,显示。 后复制的项将复盖先复制的那些,因此,如果具有相同名称。

  1. 指定项目使用 DeploymentItemAttribute

  2. 依赖项。 例如,应用程序配置文件和依赖程序集。

  3. .testsettings文件中指定的项目,因此,如果您使用的。

  4. 已检测的二进制文件。 例如,检测启用代码复盖率数据或 IntelliTrace 的程序集。

    如果正在使用就地检测,则首先检测二进制文件,然后将其复制到部署目录中;否则将首先复制二进制文件再进行检测。 就地检测是本地运行的测试的默认设置。

  5. 构成测试的一个或多个文件。 这包括用于单元测试的测试程序集、用于手动测试的文本或 .mht 文件或用于其他测试类型(如一般测试)的其他类型的文件。

将在 TestResults 内容?

  • 测试运行文件夹。 对于包含启动的每个文件夹测试运行。 它创建的名称包括时间。

    如果在名为 .testsettings 文件指定设置和清理脚本,测试运行的文件夹包含这些脚本。

  • 。 每个测试运行文件夹都包含一个名为 Out 的文件夹。 out 文件夹是实际部署文件夹,程序集和其他部署文件复制,在测试运行开始时。

  • 。 代码复盖率结果和其他某些在文件夹测试结果存储区名为。

请参见

参考

DeploymentItemAttribute

概念

对程序集进行检测和重新签名

其他资源

指定 Visual Studio 测试的测试设置