在生成过程中运行测试

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

备注

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

下面是你可以利用 Team Foundation Build 执行的操作

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

  • 运行自动测试

  • 指定 Visual Studio 测试运行程序运行的测试的条件

  • 临时禁用测试

  • 启用测试影响分析

  • 定义多个测试运行

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

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

  • 获取详细信息

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

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

准备测试:确保解决方案和测试文件已签入版本控制。 请参阅使用版本控制

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

准备生成服务器:某些类型的测试只能由专门配置的生成服务器上的生成代理运行。 例如,如果您要运行编码的 UI 测试,则必须配置生成代理才能交互式运行。 在您尝试使用生成过程运行测试之前,请确保这些测试能够在您计划使用的生成服务器上运行。 有关详细信息,请参阅Use Your Build Agent to Run Tests

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

  • 若要生成任何 CPP 测试项目,您必须安装 Visual Studio Professional或更高版本。

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

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

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

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

    3. IntelliTrace:Visual Studio 旗舰版。

  • 在生成计算机上生成任何现代风格的应用程序:Visual Studio 旗舰版或 Visual Studio Express for Windows 8(生成服务器上的操作系统必须为 Windows 8)。

  • 为带有伪造程序集的项目编译和运行测试:Visual Studio 旗舰版。

运行自动测试

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

  • 要运行的测试

  • 要用于运行测试的设置

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

  1. 在**“团队资源管理器”中,选择 “主页”图标“主页”,然后选择 “生成”图标“生成”**(键盘:Ctrl + 0, B)。

  2. 在**“生成”页上,选择“新建生成定义”或打开所选生成或生成定义的上下文菜单,然后选择“编辑生成定义”**。

    这将出现生成定义窗口。

  3. 在生成定义的**“进程”选项卡上,选中“自动测试”**框,然后选择省略号按钮 (...)。

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

  4. 执行以下步骤之一:

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

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

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

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

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

  7. 测试程序集文件规范

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

  8. 如果您希望测试运行收集并发布代码覆盖率数据,请将**“选项”设置为“启用代码覆盖率”**。

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

  9. 从**“选择用于执行测试的目标平台”菜单中,选择“x86”测试 32 位二进制文件,或选择“x64”**测试 64 位二进制文件。

  10. 您可指定要运行测试的条件。

指定 Visual Studio 测试运行程序运行的测试的条件

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

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

  • **指定要包含的名称/值对。例如,你可能拥有一种叫做 bvt 的测试类别。 将“测试用例筛选器”**设置为 TestCategory=bvt 以仅运行此类别的测试。

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

临时禁用测试

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

启用测试影响分析

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

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

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

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

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

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

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

定义多个测试运行

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

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

  • 两组测试:

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

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

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

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

启用第三方单元框架

仅当您向生成控制器提供了对第三方框架程序集的访问权限时,生成过程才能基于第三方单元测试框架运行单元测试。

  1. 查找或指定(如有必要)生成控制器至自定义程序集的路径

  2. 查找或创建(如有必要)从服务器上的自定义程序集文件夹到工作区中本地文件夹的映射

  3. 获取第三方单元测试插件:

    适配器

    语言

    Boost

    C++

    Chutzpah

    JavaScript

    Google

    C++

    MbUnit

    C#

    MSpec

    MSpec

    nUnit

    C#

    用于 Visual Studio 的 Python 工具

    Python

    Silverlight

    Silverlight

    TSTestAdapter

    TypeScript

    VsNodeTest

    Node.js

    xUnit.net

    C#

    xUnit++

    C++

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

    C:\Downloads>ren NUnitTestAdapter.vsix NUnitTestAdapter.zip
    
  5. 将 .zip 文件的内容解压缩到第 2 步中映射的本地工作区文件夹。

  6. 签入文件

    提示

    有关在版本控制中使用第三方二进制文件的策略,请参阅利用您的代码未生成的第三方二进制文件

[Visual Studio 2012.3] 包括对第三方单元测试框架的增强,以实现自动在团队生成定义中包含这些框架。

警告

您可能需要安装第三方单元测试框架的 NuGet 程序包的最新版本,从而确保框架包含生成定义增强。

在生成控制器上启用第三方单元测试框架 - ([Visual Studio 2012.1]

  1. 在解决方案资源管理器中,打开测试项目的上下文菜单并选择**“管理 NuGet 程序包”**。

  2. 在“管理 NuGet 程序包”对话框的左列中,选择**“联机”**。

  3. 选择第三方单元测试框架的 NuGet 程序包,然后选择**“安装”**。

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

  5. 在解决方案资源管理器中,打开解决方案的上下文菜单,然后选择**“将解决方案添加到源代码管理”**。

  6. 您现在可对生成进行排队,使用第三方单元测试框架的测试将会自动运行。

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

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

接下来尝试此操作

使用 Team Web Access 计划手动测试

深入开发

对生成过程使用默认模板提供有关如何创建基于默认模块的生成定义的详细信息。 本主题包括有关您可在编译代码时使用的**“平台”**位数设置的信息。

请参见

概念

定义生成过程

根据“生成-部署-测试”工作流运行自动化测试

其他资源

使用 Microsoft Visual Studio 运行系统测试