如何:配置测试部署

Visual Studio 旗舰版 的测试引擎可在您创建或生成测试的文件夹中运行测试,也可在单独的部署文件夹中运行测试。 如果将测试部署到单独的文件夹中,则在运行测试时可以继续生成解决方案。

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

  • 测试程序集文件

  • 所有依赖程序集

  • 已指定的测试所依赖文件,例如 XML 文件和配置文件。 可以用两种方式来配置部署:一种是指定要复制的其他部署项,一种是更改相应的部署文件夹。

部署文件夹可以是本地文件夹,也可以是远程文件夹。 当您使用测试代理控制器和测试代理时,将发生远程测试部署。 有关远程部署的更多信息,请参见如何:使用测试控制器和测试代理运行测试

在运行解决方案的测试时,Visual Studio 会在解决方案层次结构中名为 TestResults 的文件夹下创建部署文件。 如果 TestResults 文件夹不存在,Visual Studio 会创建它。

提示

如果使用 Visual Studio IDE,此文件夹便会直接创建在解决方案文件夹之下;如果没有使用 Visual Studio IDE,TestResults 文件夹便会创建在当前文件夹之下。

每次开始测试运行时,Visual Studio 都会在 TestResults 文件夹下创建一组专供此次测试运行使用的文件夹。在下图所示的示例中,TestResults 下的第一个文件夹是“<用户名>@<计算机名><日期> <时间>”。 这是用于命名每个测试运行文件夹的模式。

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

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

正如上图中所示,解决方案 ClassLibrary1 中包含两个项目:ClassLibary1 和 TestProject1。 由于测试已经运行,所以此解决方案中还包含一个名为 TestResults 的文件夹。 对于每个测试运行,TestResults 文件夹中都包含一个对应的测试结果文件。 此测试结果文件带有 .trx 扩展名。

TestResults 文件夹下还将创建一些其他的文件夹,如下所述:

  • 测试运行文件夹。 在 TestResults 文件夹下,为已启动的每个测试运行都建立了一个文件夹。 正如“测试结果”窗口和“测试运行”窗口中所显示的,测试运行文件夹与测试运行同名。 测试运行名称的默认格式为 <用户名>@<计算机名> <日期> <时间>。 测试运行文件夹中还包含在测试运行前后运行的清理脚本。

  • Out 文件夹和子文件夹。 每个测试运行文件夹都包含一个名为 Out 的文件夹。 Out 文件夹是实际部署文件夹。 每次启动测试运行时,都要将测试运行所需的程序集及其他文件或文件夹复制到 <解决方案>\TestResults\<测试运行>\Out 文件夹中。

  • In 文件夹和子文件夹。 每个测试运行文件夹都包含一个名为 In 的文件夹。 当生成某些测试结果时,会将这些结果存储在 In 文件夹或一个子文件中。 例如,代码覆盖率结果将存储在一个名为 data.coverage 的文件中,而该文件位于名为 <测试运行 id>\<运行测试的计算机> 的子文件夹中。

设置部署选项

可以通过以下方式控制测试部署:

选择部署项。 对于本地测试部署,测试引擎在运行测试之前将部署项(包括文件和文件夹)复制到您计算机上的某个文件夹中。 可以在测试设置文件中添加要部署的文件和文件夹。 有关执行此操作的步骤,请参见创建测试设置以从 Visual Studio 中运行自动测试创建作为测试计划一部分的自动测试的测试设置

  • 有关复制部署项的顺序的信息,请参见部署顺序。

为单个测试选择部署项

下面的步骤仅适用于一个测试方法。 这些步骤确定 Visual Studio 旗舰版运行该特定测试之前要复制的文件。

使用“部署项”属性部署单个测试的项

  1. 在“测试视图”窗口或“测试列表编辑器”中选择一个测试。

  2. 按 F4。

    将显示该测试的“属性”窗口。

  3. 单击**“部署项”**属性。

    值列中将出现一个省略号 (…)。

  4. 单击该省略号。

    随即出现**“字符串集合编辑器”**对话框。

  5. 在运行该测试之前,键入要复制到测试部署文件夹中的文件夹或文件的路径。 按**“Enter”**并键入其他路径,以指定要部署的其他文件夹和文件。

    提示

    可以在部署项的路径中使用环境变量。 有关示例,请参见 DeploymentItemAttribute

  6. 单击**“确定”**。

    除了在用于该测试的运行配置中指定的部署项以外,还将部署您所指定的部署项。

    提示

    对于单元测试,指定这些部署项的代码将写入该测试的源代码中的 DeploymentItem 特性中。

使用 DeploymentItem 特性部署单个测试的项

  1. 打开包含单元测试的源代码文件。

  2. 在 TestMethod 特性下,添加一个 DeploymentItem 特性。

  3. 对于 DeploymentItem 特性的参数,指定要为该测试部署的文件夹或文件。 可以使用绝对路径,也可以使用相对路径。 相对路径是相对于 .testrunconfig 文件中的 RelativePathRoot 设置。

    在 C# 中的示例:

    [TestMethod]

    [DeploymentItem("MyTestProject\\testdatasource.mdb")]

    public void TestMethod1()

    {

    // TODO: Add test logic here

    }

    在 Visual Basic 中的示例:

    <TestMethod()> _

    <DeploymentItem("MyTestProject\\testdatasource.mdb")> _

    Public Sub TestMethod1()

    ' TODO: Add test logic here

    End Sub

    提示

    DeploymentItem 特性只能应用于测试方法,不能应用于测试类。

  4. 保存并关闭该单元测试源代码文件。

    运行测试时,除了将部署在用于该测试的运行配置中指定的部署项以外,还将部署您指定的部署项。

部署顺序

部署项将按特定顺序进行复制。 如果存在同名的部署项,则后复制的部署项将覆盖先复制的部署项。 例如,在测试设置中指定的部署项将比为单个测试指定的项后复制。

下面的列表按优先级从高到低的顺序排列。 也就是说,先列出的项将覆盖后列出的项。 在下面的列表中,某些项将自动部署到部署文件夹中;其中包括测试程序集、已检测的二进制文件和依赖程序集。

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

  2. 已检测的二进制文件。 这是经过检测的二进制文件,例如,用于启用代码覆盖率。

    提示

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

  3. 在测试设置中指定的项。

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

  5. 每个测试的部署项。 其中包括为测试方法指定的项。

请参见

任务

创建测试设置以从 Visual Studio 中运行自动测试

参考

DeploymentItemAttribute

概念

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