VSTS构建-根据在请求中修改的文件来选择运行哪些单元测试

时间:2018-11-16 05:08:11

标签: continuous-integration azure-devops azure-pipelines azure-pipelines-release-pipeline

我想根据在触发管道的PR中修改了哪些文件来控制VSTS构建管道中运行的单元测试。

有没有一种方法可以检测在为PR触发的VSTS构建过程中在请求中修改了哪些文件,然后根据该信息选择要运行的测试?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的:

手动方法

一种解决方法是在管道中有一个自定义Powershell任务,该任务根据某个文件在上一次提交中是否被更改来设置变量。因此,您可能会有这样的管道:

Example build pipeline

您的“设置上次提交的文件条件”步骤将包含一个内联powershell脚本,以根据某个字符串是否位于上次提交的文件列表中来设置Build变量,其中“ YOURFILE.cs”是您感兴趣的文件(可以用任何逻辑替换):

$ChangedFiles = & git show --pretty="" --name-only

if ($ChangedFiles -like '*YOURFILE.cs*') {
    Write-Output ("##vso[task.setvariable variable=RunTests;]true")
 }
else{
     Write-Output ("##vso[task.setvariable variable=RunTests;]false")
}

然后,在“运行测试”步骤中,您可以设置一个条件控制选项,该选项将查看此变量,以决定是否运行该组测试:

Custom control option

Visual Studio测试影响分析

如果您使用Visual Studio测试任务来运行测试,则还有一个内置选项,可以通过“测试影响分析”功能仅运行受该构建影响的测试。

Impacted tests

这可能对您有用,但不能直接回答您的特定问题,范围更广。提供更多信息,on the Azure Devops documentation pages