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

Continuous integration VSTS构建-根据拉取请求中修改的文件选择运行哪些单元测试,continuous-integration,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,Continuous Integration,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,我想根据触发管道的PR中修改的文件来控制VSTS构建管道中运行的单元测试 是否有方法可以检测在为该PR触发的VSTS构建期间在拉取请求中修改了哪些文件,然后根据该信息选择要运行的测试?是的,这是可能的: 人工进近 一种方法是在管道中设置自定义Powershell任务,该任务根据上次提交时是否更改了某个文件来设置变量。因此,您可能有这样一个管道: “为上次提交中的文件设置条件”步骤将包含一个内联powershell脚本,用于根据某个字符串是否在上次提交的文件列表中设置生成变量,其中“YOURFI

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

是否有方法可以检测在为该PR触发的VSTS构建期间在拉取请求中修改了哪些文件,然后根据该信息选择要运行的测试?

是的,这是可能的:

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

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

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

VisualStudio测试影响分析 如果您使用Visual Studio测试任务来运行测试,那么还有一个内置选项,通过测试影响分析功能仅运行受生成影响的测试


这可能对你有用,但不能直接回答你的具体问题,而且范围更广。更多信息可用

这与我的意图非常接近。如果我正确阅读了您的“手册”答案,那么如果在提交中修改了特定文件,它将运行项目中的所有测试。有没有办法指定一个测试列表?换句话说,我希望Powershell脚本的输出是要运行的测试方法的列表。例如:如果修改了文件“foo.cs”,则运行测试方法“foo\u test”。如果文件“bar.*.cs”已被mofied,则运行测试方法“bar.*\u test”。
$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")
}