Visual Studio 测试任务

Azure Pipelines

使用此任务通过 Selenium (Appium、编码的 UI 测试等) 运行单元测试Visual Studio Test Runner。 除了基于 MSTest 的测试外,还可以执行具有 Visual Studio 测试适配器的测试框架,例如 xUnit、NUnit、用户代码。

可以通过在 .runsettings文件 中指定适当的目标框架值,执行面向 .NET Core 框架的测试。

可以使用此任务的版本 2 在多个代理上分发测试。 有关详细信息,请参阅使用测试任务 并行Visual Studio测试

检查先决条件

如果使用的是自Windows代理,请确保计算机已安装此必备组件:

需求

代理必须具有以下功能:

vstest

可以通过两种方式满足 vstest 需求:

  1. Visual Studio代理计算机上安装了 。

  2. 通过使用管道Visual Studio测试平台安装程序任务。

YAML 代码片段

# Visual Studio Test
# Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).
- task: VSTest@2
  inputs:
    #testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
    #testAssemblyVer2: | # Required when testSelector == TestAssemblies
    #  **\*test*.dll
    #  !**\*TestAdapter.dll
    #  !**\obj\** 
    #testPlan: # Required when testSelector == TestPlan
    #testSuite: # Required when testSelector == TestPlan
    #testConfiguration: # Required when testSelector == TestPlan
    #tcmTestRun: '$(test.RunId)' # Optional
    #searchFolder: '$(System.DefaultWorkingDirectory)' 
    #testFiltercriteria: # Optional
    #runOnlyImpactedTests: False # Optional
    #runAllTestsAfterXBuilds: '50' # Optional
    #uiTests: false # Optional
    #vstestLocationMethod: 'version' # Optional. Options: version, location
    #vsTestVersion: 'latest' # Optional. Options: latest, 16.0, 15.0, 14.0, toolsInstaller
    #vstestLocation: # Optional
    #runSettingsFile: # Optional
    #overrideTestrunParameters: # Optional
    #pathtoCustomTestAdapters: # Optional
    #runInParallel: False # Optional
    #runTestsInIsolation: False # Optional
    #codeCoverageEnabled: False # Optional
    #otherConsoleOptions: # Optional
    #distributionBatchType: 'basedOnTestCases' # Optional. Options: basedOnTestCases, basedOnExecutionTime, basedOnAssembly
    #batchingBasedOnAgentsOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customBatchSize
    #customBatchSizeValue: '10' # Required when distributionBatchType == BasedOnTestCases && BatchingBasedOnAgentsOption == CustomBatchSize
    #batchingBasedOnExecutionTimeOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customTimeBatchSize
    #customRunTimePerBatchValue: '60' # Required when distributionBatchType == BasedOnExecutionTime && BatchingBasedOnExecutionTimeOption == CustomTimeBatchSize
    #dontDistribute: False # Optional
    #testRunTitle: # Optional
    #platform: # Optional
    #configuration: # Optional
    #publishRunAttachments: true # Optional
    #failOnMinTestsNotRun: false # Optional
    #minimumExpectedTests: '1' # Optional
    #diagnosticsEnabled: false # Optional
    #collectDumpOn: 'onAbortOnly' # Optional. Options: onAbortOnly, always, never
    #rerunFailedTests: False # Optional
    #rerunType: 'basedOnTestFailurePercentage' # Optional. Options: basedOnTestFailurePercentage, basedOnTestFailureCount
    #rerunFailedThreshold: '30' # Optional
    #rerunFailedTestCasesMaxLimit: '5' # Optional
    #rerunMaxAttempts: '3' # Optional

自变量

参数 描述
testSelector
使用 选择测试
(测试) 必需:使用此选项可以指定包含测试的一个或多个测试程序集。 可以选择指定筛选条件以仅选择特定测试。
测试计划: 使用此选项可以运行与测试计划关联的自动测试方法的测试。 若要详细了解如何将测试与测试用例工作项关联,请参阅 将自动测试与测试用例关联
测试运行: 设置环境以从测试计划 运行测试 时,请使用此选项。 在 CI/CD (的持续集成/持续部署中运行测试时,不应) 此选项。
默认值:30testAssemblies
testAssemblyVer2
测试文件
(从) 运行测试的必需选项。 可以通过分别指定 和 文件来运行有序测试和 Web .orderedtest.webtest 测试。 若要运行 .webtest ,Visual Studio 2017 Update 4 或更高版本。 文件路径相对于搜索文件夹。 支持多行微型匹配模式。 详细信息
默认值:30**\\*test*.dll\n!**\\*TestAdapter.dll\n!**\\obj\\**
testPlan
测试计划
(必需) 选择包含具有自动测试用例的测试套件的测试计划。
testSuite
测试套件
(必需) 选择一个或多个包含自动测试用例的测试套件。 测试用例工作项必须与自动化测试方法相关联。 了解详细信息
testConfiguration
测试配置
("选择) 配置"时,选择"必需"。
tcmTestRun
测试运行
(从) 触发自动测试运行时,使用基于测试 运行的可选选项。 此选项不能用于在 CI/CD 管道中运行测试。
searchFolder
搜索文件夹
(搜索) 程序集所需的文件夹。
testFiltercriteria
测试筛选条件
(可选) 从测试程序集筛选测试的其他条件。
例如:Priority=1|Name=MyTestMethod详细信息
runOnlyImpactedTests
仅运行受影响的测试
(可选) 自动选择,并仅运行验证代码更改所需的测试。 详细信息
runAllTestsAfterXBuilds
应运行所有测试的生成数
(可选) 自动运行所有测试的生成数。 测试影响分析存储测试用例和源代码之间的映射。 建议定期运行所有测试来重新生成映射。
uiTests
测试组合包含 UI 测试
(可选) 若要运行 UI 测试,请确保将代理设置为在启用了自动登录的交互模式下运行。 在将生成/发布排队之前,必须设置代理以交互方式运行。 选中此框不会自动在交互模式下配置代理。 任务中的此选项仅用作正确配置代理的提醒,以避免失败。 托管Windows VS 2015 和 2017 池中的托管代理可用于运行 UI 测试。
vstestLocationMethod
使用 选择测试平台
(可选) 指定应该使用哪个测试平台。
vsTestVersion
测试平台版本
(可选) 测试Visual Studio版本。 如果指定了 latest,则Visual Studio 2017 或 Visual Studio 2015,具体取决于安装什么。 Visual Studio 2013不支持。 若要运行测试而无需Visual Studio,请使用 UI 或 YAML 中的 Installed by tools installer toolsInstaller 中的 选项。 请务必包含"测试 ‘ Visual Studio安装程序"任务 ’ ,以从测试平台获取NuGet。
vstestLocation
路径vstest.console.exe
(可选) 指定 VSTest 的路径。
runSettingsFile
“设置”文件
(可选) runsettingstestsettings 文件的路径以用于测试。从 Visual Studio 15.7 开始,建议对所有类型的测试使用 runsettings。 若要详细了解如何将 .testsettings 文件转换为 .runsettings 文件, 请参阅本主题
overrideTestrunParameters
替代测试运行参数
(可选) 替代在 runsettings 文件的 TestRunParameters 部分或 testsettings 文件的 Properties 节中定义的参数。
例如:-key1 value1 -key2 value2注意:可以使用 Visual Studio 2017 Update 4 或更高版本通过 TestContext 访问文件中指定的属性
pathtoCustomTestAdapters
自定义测试适配器的路径
(自定义) 适配器的可选目录路径。 将自动发现驻留在测试程序集的同一文件夹中的适配器。
runInParallel
在多核计算机上并行运行测试
(可选) 如果设置,则测试将利用计算机可用核心并行运行。 如果在 runsettings 文件中指定,这将替代 MaxCpuCount。 单击此处详细了解如何并行运行测试。
runTestsInIsolation
独立运行测试
(可选) 在隔离进程中运行测试。 这使得 vstest.console.exe 进程在测试中出错时不太可能停止,但测试运行速度可能会变慢。 使用多代理作业设置运行时,当前无法使用此选项。
codeCoverageEnabled
已启用代码覆盖率
(可选) 从测试运行收集代码覆盖率信息。
otherConsoleOptions
其他控制台选项
(可选) 可传递给 的其他控制台选项, vstest.console.exe 如此处 vstest.console.exe。 这些选项不受支持,在使用代理作业的多代理并行设置运行测试或使用测试计划选项运行测试时将被忽略。 可以改为使用设置文件指定选项。
distributionBatchType
批处理测试
(可选) 批处理是一组测试。 一批测试同时运行其测试,并发布该批的结果。 如果运行任务的作业设置为使用多个代理,则每个代理将选取任何可用的测试批以并行运行。
根据测试和代理的数量: 基于参与测试运行的测试和代理数的简单批处理。
根据过去的测试运行时间: 此批处理会考虑过去的运行时间,以创建测试批,使每个批的运行时间大致相等。
基于测试程序集: 程序集中的测试一起批处理。"
默认值:30basedOnTestCases
batchingBasedOnAgentsOption
批处理选项
(可选) 基于参与测试运行的测试和代理的数量进行简单批处理。 自动确定批大小后,每个批都包含 (total number of tests / number of agents) 测试。 如果指定了批大小,则每个批将包含指定数量的测试。
默认值:30autoBatchSize
customBatchSizeValue
每批测试数
(必需) 指定批大小
默认值:3010
batchingBasedOnExecutionTimeOption
批处理选项
(可选) 此批处理会考虑过去的运行时间,以创建测试批,使每个批的运行时间大致相等。 快速运行的测试将一起批处理,而运行时间较长的测试可能属于单独的批处理。 当此选项与多代理作业设置一同使用时,总测试时间将缩短到最小值。
默认值:30autoBatchSize
customRunTimePerBatchValue
每批 (运行时间) 秒
(必需) 指定每批 (的) 秒
默认值:3060
dontDistribute
复制测试,而不是在作业中使用多个代理时分发测试
(可选) 在多代理作业中运行任务时,选择此选项不会在代理之间分配测试。
每个选定的测试 (都会) 代理上重复执行。
当代理作业配置为在无并行或多配置选项下运行时,此选项不适用。
默认值:30False
testRunTitle
测试运行标题
(可选) 为测试运行提供名称
platform
生成平台
(可选) 生成平台,应报告测试。 如果在生成任务中为平台定义了变量,请在此处使用该变量。
configuration
生成配置
(可选) 应报告测试的生成配置。 如果在生成任务中定义了用于配置的变量,请在此处使用该变量。
publishRunAttachments
Upload测试附件
(可选) 选择加入/退出发布运行级别附件。
默认值:30true
failOnMinTestsNotRun
如果未运行最少数量的测试,则任务失败
(可选) 如果未运行最少数量的测试,请使用此选项使任务失败。 如果对任务输入或基础测试适配器依赖项的任何更改都只导致找到所需测试的子集,则这可能很有用。
默认值:30False
minimumExpectedTests
测试的最小数量
(可选) 指定任务成功应运行的最小测试数。 总测试运行数计算为通过、失败和中止的测试的总和。
默认值:301
diagnosticsEnabled
收集发生灾难性故障时的高级诊断
(可选) 使用此选项可启用诊断数据收集,以排查灾难性故障(如测试崩溃)。
选中此选项后,将生成序列 XML 文件并附加到测试运行。 序列文件包含有关测试运行顺序的信息,以便可以识别潜在的有害测试。
默认值:30false
collectDumpOn
收集进程转储并附加到测试运行报告
(可选) 使用此选项收集可用于进一步分析的微型转储。
仅中止时:仅在测试运行中止时收集微型转储。
始终:无论测试运行是否完成,都将始终收集微型转储。
从不:无论测试运行是否完成,都将不会收集微型转储
rerunFailedTests
重新运行失败的测试
(可选) 选择此选项将重新运行任何失败的测试,直到它们通过或达到最大尝试次数。
默认值:30False
rerunType
如果测试失败超过指定的阈值,请不要重新运行
(可选) 使用此选项可避免在失败率超过指定阈值时重新运行测试。 如果任何环境问题导致大规模故障,这适用。可以使用 basedOnTestFailureCount 将失败百分比或失败测试数指定为 basedOnTestFailurePercentage 阈值。
默认值:30basedOnTestFailurePercentage
rerunFailedThreshold
失败百分比
(可选) 使用此选项可避免在失败率超过指定阈值时重新运行测试。 如果任何环境问题导致大规模故障,这适用
默认值:3030
rerunFailedTestCasesMaxLimit
失败的测试数
(可选) 使用此选项可避免在失败的测试用例数超过指定限制时重新运行测试。 如果任何环境问题导致大规模故障,并且重新运行 rerunTypeFailedTestCasesMaxLimit,则这适用。
默认值:305
rerunMaxAttempts
最大尝试次数
(可选) 指定重试失败测试的最大次数。 如果测试在达到最大尝试次数之前通过,将不会进一步重新运行。
默认值:303

开放源代码

此任务是 GitHub 上的开放源代码。 欢迎提供反馈和建议。

常见问题解答

如何运行使用 TestCase 作为数据源的测试?

若要运行使用 TestCase 作为数据源的自动测试,需要以下各项:

  1. 代理计算机上Visual Studio 2017.6 或更高版本。 Visual Studio测试平台安装程序任务不能用于运行使用 TestCase 作为数据源的测试。

  2. 创建一个 PAT, 该 PAT 授权范围为"工作项 ( 完全 ”) "。

  3. 添加名为 Test.TestCaseAccessToken 的安全生成或发布变量,其值设置为在上一步中创建的 PAT。

使用某些任务选项运行数据驱动的 xUnit 和 NUnit 测试时,我的问题。 是否有已知的限制?

使用 xUnit 和 NUnit 测试框架的数据驱动测试存在一些已知限制,不能用于以下任务选项:

  1. 重新运行失败的测试。

  2. 在多个代理和批处理选项上分发测试。

  3. 测试影响分析

上述限制是因为这些测试框架的适配器如何发现并报告数据驱动的测试。