【问题标题】:How to reference coverage file path in VSTS VsTest task?如何在 VSTS VsTest 任务中引用覆盖文件路径?
【发布时间】:2018-04-16 14:26:26
【问题描述】:

我在构建定义中有一个 VsTest 任务,它会生成一个 .coverage 文件,可以使用“下载代码覆盖结果”链接下载该文件。然后我使用ReportGenerator 从中创建HTML 报告。效果很好。

现在我想添加一个脚本任务来在服务器上运行 ReportGenerator,但我无法弄清楚如何实际引用 .coverage 文件。每次运行都不同,路径如下:

"C:\agent\_work\1\s\TestResults\0195053f-05f0-40a5-bfae-a0215dd0af80\WIN-JQJJSGM4KOU$_WIN-JQJJSGM4KOU 2018-04-13 06_50_42.coverage"

路径的第一部分似乎是$(Common.TestResultsDirectory),但0195053f-05f0-40a5-bfae-a0215dd0af80 是什么?可能是一个身份,但是是哪一个?

Microsoft 有一个不错的 Build Variables page,我稍后会详细介绍,但希望有人已经弄清楚了。

【问题讨论】:

  • 您应该能够使用 REST API 为每个构建获取此文件的路径。如果你这样做,动态部分就无关紧要了。您可以获取路径,然后将其传递给您的报告生成器。我会从那里开始。
  • @tehbeardedone 不知道怎么做,但听起来很有希望。会试一试。谢谢。
  • 如果我有更多时间,我会举个例子。您可能需要先发布结果,然后您应该能够使用 REST API 获取构建工件。我不记得具体怎么做,但我知道可以做到。自从我不得不这样做已经有一段时间了,但我曾经使用 dotcover 来生成覆盖率报告,然后我会使用 API 拉下该文件并将其转换为我需要的格式。我非常有信心它可以做到,您可能需要挖掘一下才能弄清楚。
  • 你解决了这个问题吗?
  • 部分。写了一些 ps,并了解了更多关于 VSTS 的知识,但还没有时间将它们整合到一个工作解决方案中,以便在 VSTS 构建定义中生成覆盖率报告。

标签: azure-devops code-coverage azure-pipelines


【解决方案1】:

VSTS build 没有内置变量来获取代码覆盖结果,它是搜索文件。因此,您可以通过 PowerShell(例如 Get-Childitem:Use Windows PowerShell to search for files)在 TestResults 文件夹中搜索文件(按文件后缀),$(Build.SourcesDirectory) 变量的值是C:\agent\_work\1\s

【讨论】:

  • 我确实使用 ps 来查找最新的 .coverage 文件并生成报告,但还没有时间弄清楚如何使报告在构建结果中可用。似乎需要自定义 vsts 扩展。但这确实回答了如何访问 .coverage 文件的具体问题,因此我将其标记为已接受。
猜你喜欢
  • 2019-04-12
  • 2014-08-17
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多