Azure devops 报告生成器任务找不到coverage.cobertura.xml 文件

2023-11-23

正如标题所示,我正在尝试让代码覆盖率在 Azure Devops Pipeline 上运行。

这是管道:

trigger:
 - master

pool:
   vmImage: 'windows-latest'

variables:
   solution: '**/*.sln'
   buildPlatform: 'Any CPU'
   buildConfiguration: 'Release'

steps:
- task: DotNetCoreInstaller@0
  displayName: 'Installing .NET Core SDK...'
  inputs:
    version: 3.1.101

- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'Building $(buildConfiguration)...'

- task: DotNetCoreCLI@2
  displayName: 'Executing dotnet tests...'
  inputs:
    command: test
    arguments: '--configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)\TestResults\Coverage\'
    projects: '**/*Test/*.csproj'
    nobuild: true

- script: |
  dotnet tool install -g dotnet-reportgenerator-globaltool
  reportgenerator -reports:$(Build.SourcesDirectory)\TestResults\Coverage\coverage.cobertura.xml - targetdir:$(Build.SourcesDirectory)\CodeCoverage -reporttypes:HtmlInline_AzurePipelines;Cobertura
  displayName: 'Creating code coverage report...'

- task: PublishCodeCoverageResults@1
  displayName: 'Publishing code coverage...'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(Build.SourcesDirectory)\CodeCoverage\Cobertura.xml'
    reportDirectory: '$(Build.SourcesDirectory)\CodeCoverage'

我的解决方案包含一个前端项目和一个名称以“Test”结尾的 xunit 测试项目。

测试运行得很好,但我always在这一行出现错误:

报告生成器-报告:$(Build.SourcesDirectory)\TestResults\Coverage\coverage.cobertura.xml ...

实际管道的错误是:

报告文件“D:\a\1\s\TestResults\Coverage\coverage.cobertura.xml”无效。文件不存在(完整路径:'D:\a\1\s\TestResults\Coverage\coverage.cobertura.xml')。

我尝试在我的电脑上本地生成测试报告,效果很好。这意味着包没问题。

我做错了什么?


正如错误消息所示,它需要coverage.cobertura.xml但没有找到。(没有生成!)

在你的脚本中:

reportgenerator -reports:$(Build.SourcesDirectory)\TestResults\Coverage\coverage.cobertura.xml - ...

The coverage.cobertura.xml是预期的输入文件,但未生成。根据我的经验,这是因为你dotnet test任务未成功生成此文件。

我相信你的dotnet test任务可能会成功,没有任何错误,但是如果我们检查日志,我们会发现它没有生成预期的结果coverage.cobertura.xml文件。问题原因可以参考这个文件:

VS测试集成

如果你使用dotnet add package coverlet.collector添加命令coverlet.collector打包到您的项目中,您应该使用命令dotnet test --collect:"XPlat Code Coverage"生成一个coverage.cobertura.xml包含结果的文件。

MSBuild集成

如果你添加coverlet.msbuild打包到您的项目中使用dotnet add package coverlet.msbuild。然后,您需要通过以下方式启用代码覆盖率:dotnet test /p:CollectCoverage=true。运行上述命令后,会出现coverage.json将生成包含结果的文件。

由于 dotnet test 命令下面的脚本需要coverage.cobertura.xml文件,你应该使用VS测试集成,这意味着你应该使用命令dotnet test --collect:"XPlat Code Coverage"代替dotnet test /p:CollectCoverage=true。这对于生成丢失的文件是有意义的。

Note:

1.在我的测试中,dotnet test尽管未生成代码覆盖率报告,但任务不会引发任何错误。我们可以随时检查任务日志以获取我们需要的真实信息。

2.另外,检查这个文件你可以找到:

如果您在 Windows 平台上进行构建,代码覆盖率指标可以 通过使用内置的覆盖数据收集器来收集。

and

如果您在 Linux 或 macOS 上构建,则可以使用 Coverlet 或 类似的工具来收集代码覆盖率指标。

因此,根据您的脚本内容,更建议在Linux或macOS代理中运行。如果您只是希望它在 Windows 中运行,它有默认的内置覆盖率数据收集器。

希望以上内容有助于解决您的困惑和原始问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure devops 报告生成器任务找不到coverage.cobertura.xml 文件 的相关文章

  • Azure DevOps Pipelines“正在等待代理的控制台输出...”

    我需要从正在运行的发布任务的输出中获取某些内容才能完成 身份验证代码 但控制台现在没有更新 我得到的只是 等待代理的控制台输出 这种情况发生在我们的自托管代理 Linux 或 Windows 和托管 Ubuntu 1604 代理上 有问题的
  • 如何诊断这些 PHP 代码覆盖分段和 zend_mm_heap 损坏错误

    我一直很高兴在我的 Ubuntu 机器上编码 这是一台拥有大量内存的强大机器 我正在研究 4 个新课程 一边编写和运行单元测试 在某些时候 我注意到 虽然单元测试完成得很好 但代码覆盖率却没有 在消息 正在生成代码覆盖率报告 等 之后 我会
  • 如何在部署作业期间设置 XML 转换的环境名称?

    好的 伙计们 给 Azure多级管道尝试一下 但不太幸运地使用部署作业进行 xml 转换 Update 这没有使用 Azure DevOps 中的经典部署 发布 UI 到目前为止我所做的 从构建过程中删除转换 尝试一次构建并随处部署 通过删
  • 如何在 azure devops 中触发拉取请求的构建和测试?

    我的 git 存储库托管在 devops 内部 我希望在创建拉取请求时构建代码并运行测试 但是我不知道如何做到这一点 我读到了有关拉取请求触发器等的内容 但我不知道如何添加这些触发器 因为似乎没有选项来创建它们 一旦拉取请求完成并合并到主控
  • 使用 TFS 在线服务构建时,有什么方法可以签署 Clickonce 应用程序吗?

    我已在我的单击一次应用程序中启用了签名 但构建服务器 TFS在线服务 没有证书 有什么方法可以将证书包含在存储库中并让构建服务器对其进行签名 或者我是否必须禁用签名并在之后手动执行此操作 我没有从商店中挑选证书 而是签入文件并从文件中挑选
  • 如何在 Azure Pipelines YAML 构建定义中接收修订

    我使用 Azure Pipelines Azure DevOps 创建了一个新版本 它运行得非常好 通常 您使用 Rev r 在构建中获取修订版本 不幸的是 似乎该变量在构建步骤中没有被替换 设置 唯一可以使用它的地方是name YAML
  • Visual Studio Online 中的时间跟踪

    有没有办法测量 Visual Studio Online 中用例或任务所花费的时间 我希望将所有内容保存在一个地方 Visual Studio Online 就是这种情况 并从那里能够生成报告 例如每个用户的每月时间跟踪报告和反映实际工作时
  • Azure DevOps 的缩写是什么?

    我认为它可能是 ADO 但这会使其与遗留的 Microsoft 数据访问层 ActiveX 数据对象 或它所代表的任何内容相混淆 或者 DevOps 但这会使其与一般的 DevOps 相混淆 而且它是无论如何 也没有那么短 是否有官方缩写或
  • 无法使用 Git 部署从多项目解决方案部署正确的网站到 Azure

    我有一个解决方案 它有一个 mvc 网站 WebApplication1 该网站依赖于解决方案中的另一个项目 WebAppCore 源代码托管在 Visual Studio Online 上的 git 中 我配置了持续集成 一切都构建得很好
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • 从 Azure DevOps 发布管道获取版本号和内部版本号以显示在网站中

    我希望能够在 Asp Net MVC Core 网站中显示版本号 图片中的 1 和内部版本号 图片中的 2 针对该特定网站 该网站是使用 Azure DevOps 构建和发布的 因此 如果我签入 MVC 网站的代码 构建和发布过程就会启动并
  • Azure Functions v3 /HTTP 触发函数:限制请求正文和 URL 大小

    我想看看如何限制最大请求长度 and 最大允许内容长度使用 HTTP 触发器和 Azure Functions v3 创建的 API 中的属性 使用 Net core 应用程序 3 1 我尝试过使用网络配置刚刚被忽略的文件 预期 但我不确定
  • 默认“合并后完成链接的工作项”为未选中

    VSTS 中出现了 PR 完成的新功能 其中默认标记为完成的 PR 也会将链接的工作项标记为完成 除非未选中 如果可能错过此复选框 是否可以将其默认为未选中 自 2017 年 8 月 28 日起 您可以更改此复选框的默认行为 虽然它默认为
  • Xcode 代码覆盖率和 fopen$UNIX2003

    我面临着一个似乎相当广泛的问题 当我使用 Lion 激活 Xcode 4 2 1 中的代码覆盖率时 它显示以下错误 Detected an attempt to call a symbol in system libraries that
  • 运行顺序构建管道作为 Azure Devops 中拉取请求分支策略的一部分

    我在 Azure Devops 中有两个管道 管道 A 在提交到 master 时触发并生成一组工件 管道 B 在管道 A 成功完成后触发并消耗其工件 只要正常提交到 master 这一切都可以正常工作 但是 如果我创建一个分支验证策略 强
  • Android 工具测试库模块覆盖率

    我继承了一个android项目来设置代码覆盖率 由于我对 android 没有做过太多的工作 在 gradle 中也几乎没有做过多少工作 所以我开始寻找有用的教程 令人惊讶的是 前几个教程非常有帮助 我能够包含 jacoco gradle
  • 如何将 tfvc 迁移到 Git(包括历史记录)

    我们计划从 tfvc 迁移到 Git 版本控制 我们有一些 GB 的代码和数千个变更集 我阅读了一些文章并浏览了 Microsoft 文档 发现了 2 个选项 提示迁移 我可以在其中使用 Azure Devops 内置工具 导入存储库 它有
  • Azure DevOps 管道构建工件中缺少 Gulp 编译的 CSS 文件夹

    一点背景 我有一个小型 dotnet 核心应用程序 该应用程序托管在 Azure 上 并且正在使用 Azure DevOps Pipelines 进行构建和部署 在我们开始使用 DevOps Pipelines 之前 CI 直接连接到 Az
  • 结帐时多存储库抛出 TF401019

    我正在尝试检查管道中的不同存储库 这些将是完整的 URL 因此两个存储库都位于同一个 Azure DevOps 中 https dev azure com company Services git mylocal https dev azu
  • ng run project:deploy - 项目目标不存在

    我有一个 Angular Web App 的工作生产版本 我的 Azure 帐户 免费套餐 上有一个有效订阅 其中包含 AppService 计划 应用服务 资源组 存储帐户 KeyVault SQL Server 和 SignalR 我想

随机推荐