在 Azure DevOps 中使用构建管道运行 Google 测试

Posted

技术标签:

【中文标题】在 Azure DevOps 中使用构建管道运行 Google 测试【英文标题】:Run Google Test with build pipeline in Azure DevOps 【发布时间】:2020-01-29 16:00:04 【问题描述】:

我无法让我的 gtest 在我的构建管道中运行。我的解决方案非常适合在 Visual Studio 2017 中构建和运行测试用例。在 DevOps 环境中,我使用 .Net 桌面设置并稍作修改。构建任务在管道中也可以正常工作。

我尝试使用默认的 VSTest 任务,但我不确定它是否适合运行使用 VS IDE 中的 Visual Studio 项目创建的 Google 测试。

构建管道 yml 脚本

# .NET Desktop

trigger:
- master

# Install build environment 
pool:
  vmImage: 'windows-latest'
  name: Hosted VS2017

variables:
  solution: '**/*.sln'
  buildPlatform: 'x86'
  buildConfiguration: 'Debug'

steps:

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

# Build VS solutions including gtest project.   
- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

# Run gTest, this task not working see log below.  
- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

VSTest 日志输出

Running tests using vstest.console.exe runner.
======================================================
Test selector : Test assemblies
Test filter criteria : null
Search folder : d:\a\1\s
VisualStudio version selected for test execution : latest
Attempting to find vstest.console from a visual studio installation with version [16.0,17.0).
Attempting to find vstest.console from a visual studio build tools installation with version [16.0,17.0).
Attempting to find vstest.console from a visual studio installation with version [15.0,16.0).
Run in parallel : false
Run in isolation : false
Path to custom adapters : null
Other console options : null
Code coverage enabled : false
Diagnostics enabled : false
SystemVssConnection exists true
Run the tests locally using vstest.console.exe
========================================================
##[warning]No test assemblies found matching the pattern: **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**.

【问题讨论】:

【参考方案1】:

是的,VSTest 任务将使用VSTest.Console.exe。它能够运行自定义测试适配器(如 Google 测试适配器)。

但是,通过 Hosted VS2017 build agent 的内置 Included Software 后,它并没有列出。如果是这样,您可以使用Self-hosted Windows agents。

您可以将 Google 测试适配器下载为 Visual Studio 扩展,将其解压缩(将 .vsix 文件重命名为 .zip)并将整个解压缩后的文件夹放在您的构建代理计算机上的某个位置。然后构建步骤必须指向该目录。

当然,此外,您的项目还应包含“googletest”NuGet 包以运行测试。

如果您仍然无法使其工作,请远程构建代理机器并通过 Azure DevOps 管道手动运行构建和测试使用 Visual Studio 或命令行。如果是环境问题,这将缩小范围。

【讨论】:

以上是关于在 Azure DevOps 中使用构建管道运行 Google 测试的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure DevOps 发布管道中运行 Java Selenium 测试

Azure Devops 构建管道 - 未发布文件

在 azure-devops 中的发布管道期间创建标签

Azure DevOps Pipelines - 仅在上一次运行成功时运行 YAML 管道

请参阅使用 YAML 管道在 Azure DevOps 中构建工件

查看有关 Azure Devops 构建管道的操作日志