在生成过程中运行测试

可以使用 Team Foundation Build 来运行自动测试,并分析代码更改对作为您的生成过程一部分的测试产生的影响。 例如,您可定义一个生成过程,将其作为团队的定期计划的版本验证测试 (BVT) 运行。 还可以运行自动测试并执行您的自定义生成过程中与测试相关的任务。

备注

如果要将应用程序作为生成过程的一部分来部署,则必须使用生成部署测试工作流和实验室环境。您可以将自动测试作为工作流的一部分运行,或在工作流完成时可以单独运行测试。有关更多信息,请参见设置“自动化生成-部署-测试”工作流

主题内容

  • 准备在您的生成过程中运行测试

  • 需要的权限

  • 使用测试运行来运行自动测试

  • 选择并配置测试运行程序

    • 使用 Visual Studio 测试运行程序来运行测试

    • 使用 MSTest 运行测试

  • 暂时禁用测试

  • 启用测试影响分析

  • 配置第三方单元测试框架

  • 从自定义生成过程运行测试

  • 更多信息

准备在您的生成过程中运行测试

在您的生成过程中运行测试之前,您可能需要先准备测试和您的生成系统。

准备测试:确定您的解决方案和您的测试文件签入到版本控制。 请参见 使用版本控制

为您的测试分类和设置优先级(可选):可以对您的测试分配类别和优先级,然后当您在生成过程中运行它们时按特性进行筛选。 例如,您可以创建称为 CI 的测试类别,然后在持续集成生成中指定该类别。 您可以为称为 bvt 的版本验证测试创建其他类别,然后在已计划的生成(例如每夜生成)中指定该类别。 有关更多信息,请参见定义对测试进行分组的测试类别TestCategoryAttributePriorityAttribute

准备您的生成服务器:测试只能由专门配置的生成服务器的生成代理负责。 例如,因此,如果运行编码的 UI 测试,必须配置您的生成代理以交互方式运行。 在您尝试使用生成过程前运行测试,以确保它们在您计划使用的生成服务器上运行。 有关更多信息,请参见使生成代理运行测试

在下列方案的生成服务器需要Microsoft Visual Studio 安装:

  • 若要编译所有菲共测试项目,必须安装 Visual Studio 专业版 或更高版本。

  • 若要运行单元测试,或编码的 UI 测试,必须安装 Visual Studio 专业版 或更高版本。

  • 使用数据和诊断数据适配器:

    1. 代码复盖率:Visual Studio 高级专业版 或更高版本。

    2. 测试影响:Visual Studio 旗舰版。

    3. IntelliTrace: Visual Studio 旗舰版。

  • 生成在生成计算机上任何现代样式 apps: Visual Studio 旗舰版 或 Visual Studio Express for Windows 8 (在生成服务器上的操作系统必须是 windows 8)。

  • 若要编译并运行测试与一个程序集的程序集的项:Visual Studio 旗舰版。

所需权限

若要执行这些过程,您的**“编辑生成定义”权限必须设置为“允许”**。 有关更多信息,请参见Team Foundation Server 权限

运行自动测试

您在基于 默认值模板的生成可执行一个或多个测试运行。 对于每次运行,您可指定以下设置:

  • 运行哪些测试

  • 哪些设置用于运行测试

  • 测试失败的情况下生成是否应失败

若要运行自动在基于默认值模板的生成过程

  1. 在菜单栏上,依次选择**“视图”“团队资源管理器”**

  2. 在**“团队资源管理器”中,选择 “主页”图标“主页”,然后再选择 “生成”图标“生成”**。

  3. 在**“生成”** 页上,选择**“新生成的定义”或打开所选的生成或生成定义的快捷菜单,并选择“编辑生成定义”**。

    此时将出现生成定义窗口。

  4. 在生成定义的**“流程”选项卡上,展开“基本”**节点。

  5. 选择 自动测试 复选框,然后选择省略号按钮 (...)。

    此时将出现**“自动测试”**对话框。

  6. 执行以下步骤之一:

    • 若要添加一组测试,请选择**“添加”**。

    • 若要修改一组测试,请对其进行选择,然后选择**“编辑”**。

    此时将出现**“添加/编辑测试”**对话框。

  7. (可选)指定测试运行的**“名称”**。 此名称显示在生成结果窗口中。 如果未指定名称,系统会自动生成。

  8. 如果您希望当此测试运行中的任意测试失败时则生成失败,那么请选中**“使未通过测试的生成失败”。 如果保留此复选框的未选中状态且任何测试均失败,则已完成的生成将被分类为“已部分成功”**。

  9. 选择测试运行程序。 使用出现的选项指定测试运行程序的操作方式。 有关更多信息,请参见 选择并配置测试运行程序。

选择并配置测试运行程序

当您定义生成过程时,选择提供所需的功能的测试运行程序。

功能

Visual Studio 测试运行程序

MSTest

运行写入 Microsoft.VisualStudio.TestTools.UnitTesting 框架的单元测试。

运行编码的 UI、泛型和顺序测试

收集代码覆盖率数据

运行写入多个框架(如 NUnit、xUnit 和其他)的单元测试。

在本机(例如,C++)二进制文件中运行单元测试。

在 Windows 应用商店 应用程序上运行单元测试。

运行 64 位测试

说明说明
MSTest 在二进制文件可以运行 64 位测试编译任何 CPU 指定为 “平台”

运行依赖伪造品结构对象的测试。

有关使用测试 fakes 框架在 .NET framework 应用程序中创建基于委托的测试存根和填充码的更多信息,请参见 用 Microsoft Fakes 隔离测试代码

生成数据库测试数据并运行数据库单元测试

收集测试影响分析数据

运行负载和 Web 测试

备注

一些功能在专门配置的生成服务器的生成代理才起作用。有关更多信息,请参见使生成代理运行测试

在了解测试运行需要的功能后,选择一个测试运行程序:

  • Visual Studio 测试运行程序

  • MSTest 与测试设置文件

  • 元数据文件 MSTest

ms253138.collapse_all(zh-cn,VS.110).gif使用 Visual Studio 测试运行程序来运行测试

若要使用 Visual Studio 测试运行程序运行基于默认值模板的生成过程

  1. 在“团队资源管理器”中,打开**“生成”**,然后添加或编辑生成定义。

    在**“处理”页上,展开“基本”,然后选择“自动测试”**。 选择省略号按钮 (...) 在行尾然后选择。添加编辑 测试源。

  2. 在**“添加/编辑测试运行”对话框中的“测试运行程序”下,选择“Visual Studio 测试运行程序”**。

  3. 测试程序集文件规范

    指定包含要运行的测试的二进制文件。 如果您希望生成代理以递归方式搜索与该生成代理工作目录的 binaries 子目录中的 *test*.dll 相匹配的任何 .dll 文件,则保留默认值 (**\*test*.dll)。 此外,也可修改文件规范以满足您的需要。

  4. 如果希望收集并发布代码复盖率数据,请设置**“选项”“启用代码覆盖率”**。

    或者,您可以使用**“客户”**选项指定 .runsettings 文件。 有关更多信息,请参见自定义代码覆盖率分析

  5. 从**“选择测试执行的目标平台”**菜单中,选择 x86 来测试您的 32 位二进制或选择 x64 来测试您的 64 位二进制。

  6. 可以 指定运行 的测试的条件。

ms253138.collapse_all(zh-cn,VS.110).gif指定 Visual Studio 测试运行程序运行的测试的标准

可以指定名称/值对来筛选运行的测试。 如果使用测试类别和优先级别特性来组织您的测试并设置其优先级,则可以通过使用 TestCategory 和优先级名称来将您正在运行的测试筛选掉。

您可以指定以下任一形式的测试类别:

  • **指定要包括的一个名称/值对。例如,您有一个名为 bvt 的测试类别。 要将“测试用例筛选器”**设置为 TestCategory=bvt 以仅在该类别中运行测试。

  • 通过使用 || (“or”运算符)。例如,可指定 TestCategory=quick||TestCategory=gui 以运行 quick 类别的测试和 gui 类别的测试。

ms253138.collapse_all(zh-cn,VS.110).gif使用 MSTest 运行测试

若要运行测试使用基于默认值模板生成的 MSTest 处理

  1. 使用测试运行来运行自动测试和执行其他测试任务,然后在**“添加/编辑测试运行”** 对话框中,**“测试运行程序”**下选择:

    • MSTest.exe 运行程序

      指定包含要运行的测试的二进制文件。 如果您希望生成代理以递归方式搜索与该生成代理工作目录的 binaries 子目录中的 *test*.dll 相匹配的任何 .dll 文件,则保留默认值 (**\*test*.dll)。 此外,也可修改文件规范以满足您的需要。

      (可选)指定**“测试设置文件”**以配置如何运行测试。 有关更多信息,请参见指定 Visual Studio 测试的测试设置

    • “MsTest 测试元数据文件”(已否决)

      如果选择此选项,则请选择**“浏览”以查找并指定要使用的测试元数据文件。 然后,您可以将“运行此 VSMDI 文件中的所有测试”复选框保持选中状态,也可以清除该复选框,然后在“要运行的测试列表”**中选择一个或多个测试。

      备注

      测试列表已弃用。有关更多信息,请参见定义对测试进行分组的测试类别

  2. 选择**“条件/参数”**选项卡。

  3. 可以按照类别筛选要运行的测试。

    您可以指定以下任一形式的测试类别:

    • **指定要包含或排除的单一测试类别。**例如,您有一个名为 bvt 的测试类别。 可以将此参数设置为 bvt 以仅运行此类别的测试,或设置为 !bvt 以运行此类别的测试之外的所有测试。

    • **通过使用 & (“and”运算符)和 !(“not”运算符)来指定多个测试类别。**例如,可以指定 quick&gui&!deep 以仅运行属于 quick 和 gui 类别但不属于 deep 类别的测试。

    • **通过使用 |(“or”运算符)和 !(“not”运算符)指定多个测试类别。**例如,可指定 quick|gui|!deep 以运行 quick 类别的测试、gui 类别的测试以及非 deep 类别的任何测试。

  4. (可选)按照优先级别筛选要运行的测试。

    提示

    如果您为测试分配了优先级别,则可使用此参数在详尽测试与快速生成之间达到更好的平衡。

    将**“最低测试优先级别”设置为等于或小于“最高测试优先级别”**的正整数,或设置为 -1 以表示没有最小值。

    将**“最高测试优先级别”设置为一个大于或等于“最低测试优先级别”**的正整数,或设置为 -1 以表示无最大值。

  5. 选择**“确定”**。

暂时禁用测试

如果您必须暂时禁用测试而不删除包含它们的测试,请展开**“高级”节点,将“禁用测试”设置为“True”。 如果希望再次启用测试,请将该值设置回“False”**。

启用测试影响分析

测试人员和开发人员可能需要了解已完成的生成中包含的代码更改对于您的测试产生了哪些影响。 如果在生成中启用测试影响分析,则系统将进行分析,然后在已完成生成的生成报告中报告代码更改对于测试产生了哪些影响。

启用测试在基于默认模板的生成值的影响分析进程

  1. 在测试设置文件中配置测试影响分析。

    有关更多信息,请参见如何:收集数据来检查在代码更改后应该运行的测试

  2. 创建一个配置为使用测试设置文件的测试集。

    有关更多信息,请参见本主题前面部分的运行自动测试。

  3. 展开“高级”节点,确保**“分析测试影响”设置为“True”,并且“禁用测试”设置为“False”**。

设置多种测试运行

您可以根据需要定义多种测试运行,以便满足您团队的生成和测试过程的需要。 例如,在以下方案中,您可能需要在单一生成中定义多个测试运行:

  • 要使用 Visual Studio 测试运行程序来测试生成与 32 位和 64 位位数的二进制的解决方案。

  • 您可以通过 Visual Studio 测试运行程序运行的某些测试,以及仅由 MSTest 运行的其他测试。

  • 两组测试:

    • 一组必须通过的高优先级别核心测试。 定义一组测试,这组测试中包括**“最低测试优先级别”和为 1 的“最高测试优先级别”。 选中“使未通过测试的生成失败”**复选框。

    • 一组不太重要的测试,是您希望运行但对于生成的可用性而言不是必须要求通过的测试。 定义一组测试,这组测试中包括为 2 的**“最低测试优先级别”和为 3 的“最高测试优先级别”。 保留“使未通过测试的生成失败”**复选框处于未选中状态。

  • 您希望使用不同的测试设置运行同一组测试。

  • 您希望生成的一组主要程序集受代码覆盖率的约束。 但是,您拥有来自外部源的不需要代码覆盖率的另一组程序集。 若要启用此类过程,您可以使用配置为使用两组测试设置文件的两种测试的集合。

启用第三方单元测试在生成控制器的结构

只有 + 当您提供生成控制器提供对第三方 framework 程序集,访问您的生成过程可以运行单元测试基于第三方单元测试框架。

  1. 位于,或者,如果需要,请指定生成控制器的路径引用自定义程序集

  2. 位于,或者,如果需要,请创建一个从服务器上的自定义程序集文件夹到本地文件夹在您的工作区域

  3. 获取一个第三方单元测试插件。 可以找到指向一些示:测试插件的单元列表.

  4. 对插件 .vsix 文件重命名为一个 .zip 文件。 例如,使用如下所示的命令提示:

    C:\Downloads>ren NUnitTestAdapter.vsix NUnitTestAdapter.zip
    
  5. 解压缩的 .zip 文件的内容读入在第 2 步 . 映射的本地工作"区域"文件夹。

  6. 签入文件

    提示

    有关方法与版本控制的第三方二进制文件,请参见 利用您的代码不生成的第三方二进制文件

[Visual Studio 2012.1] 包括第三方单元测试的一种提高测试框架自动它们在团队生成定义的中。

警告

您可能需要安装 NuGet 程序包的新版本该一方 3 的单元测试框架确保框架包括生成定义增强功能。

启用第三方单元测试在生成控制器的结构 ([Visual Studio 2012.1]

  1. 在解决方案资源管理器中,打开在测试项目的快捷菜单并选择 管理 NuGet 程序包

  2. 在管理 NuGet 程序包对话框中,在左侧列中,选择 联机

  3. 为第三方单元选择 NuGet 程序包结构测试并选择 安装

  4. 在 NuGet 程序包完成安装后,选择 关闭

  5. 在解决方案资源管理器中,打开该解决方案中的快捷菜单中选择 将解决方案添加到源代码管理

  6. 现在可以对您的生成,并测试与第三方单元测试框架将自动运行。

在自定义生成过程中使用测试

如果您的团队需要生成过程具有深层自定义功能,那么,您可以在自定义生成过程中运行测试并执行与测试相关的其他任务。 有关更多信息,请参见:

更多相关信息

定义基于默认模板的生成过程 提供有关如何安装的更多信息创建基于默认值模板的生成定义。 本主题包括有关**“平台”**位元设置,在编译代码时可以使用信息。

“生成-部署-测试”工作流指南 使用您的生成过程提供在实验室环境中部署应用程序和运行测试的信息。

在 Microsoft 测试管理器中运行测试 提供有关如何运行测试的更多信息。

请参见

概念

定义生成过程

在 Microsoft 测试管理器中创建和管理测试