当前位置: 首页 > 知识库问答 >
问题:

为Azure DevOps上线设置代码覆盖率

鲜于宜修
2023-03-14

对于我的Golang项目,我不清楚代码覆盖在Azure DevOps中是如何工作的。我的专长是看到这样的东西:

我很困惑,因为我看到这个提示“设置代码覆盖率”:

但是在“代码覆盖率”选项卡中是一个生成的html报告:

我在任务“发布代码覆盖率结果”中收到此警告

##[warning]忽略包含Html内容的覆盖率报告目录,因为我们正在自动生成Html的内容

但是当我使用< Code > disable . Coverage . auto generate:' false ' 禁用html生成时,在“代码覆盖率”选项卡下没有显示任何报告,只有消息“代码覆盖率报告无法呈现,因为没有找到报告HTML。请验证在发布代码覆盖率时是否指定了包含HTML报告的“报告目录”。

这是我的管道:

trigger: 
 - master

pool:
   vmImage: 'ubuntu-latest'

variables:
  GOBIN:  '$(GOPATH)/bin'
  GOPATH: '$(system.defaultWorkingDirectory)/gopath'
  disable.coverage.autogenerate: 'false'

steps: 

- script: |
    echo '##vso[task.prependpath]$(GOBIN)'
    echo '##vso[task.prependpath]$(GOROOT)/bin'

- task: GoTool@0
  inputs:
    version: '1.14.2'
- task: Go@0
  inputs:
    command: 'get'
    arguments: '-d ./...'
    workingDirectory: '$(System.DefaultWorkingDirectory)'

- script: |
    go get github.com/jstemmer/go-junit-report
    go get github.com/axw/gocov/gocov
    go get github.com/AlekSi/gocov-xml
    go test -v -coverprofile=coverage.txt -covermode count ./... 2>&1 | go-junit-report > report.xml
    gocov convert coverage.txt > coverage.json
    gocov-xml < coverage.json > coverage.xml
    mkdir coverage
  workingDirectory: '$(System.DefaultWorkingDirectory)'
  displayName: 'Run unit test'

- task: PublishTestResults@2
  inputs:
    testRunner: JUnit
    testResultsFiles: $(System.DefaultWorkingDirectory)/**/report.xml

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura 
    pathToSources: '$(System.DefaultWorkingDirectory)'
    summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml
    reportDirectory: $(System.DefaultWorkingDirectory)/**/coverage
    failIfCoverageEmpty: true

完整日志:https://gist.githubusercontent.com/dhcgn/682dd6027d8d0703cb4dc6d5ae2fbead/raw/9d2bb96d1d8a0721335d56a121a5eed254ac014f/pipeline.log

共有1个答案

洪黎昕
2023-03-14

你希望在生成摘要上看到的代码覆盖率报告是旧的生成管道 UI 页。

现在Azure devops服务已经实现了新的多阶段管道UI页面。代码覆盖率报告将移动到代码覆盖率选项卡,如您现在所见。

您希望在上面的屏幕截图中看到的构建摘要页面不再可用,因为允许切换回旧的构建管道UI页面的此功能切换已被移除。看这里。

不过在Azure devo PS Server 2019/TFS 2018/TFS 2017中还是可以看到旧的管道UI页面。

 类似资料:
  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l

  • 我在这个问题上已经有一段时间了,我不能让现有的解决方案为我工作。 我有一个用E编写的Node.jsAPIxpress.js.我一直在使用摩卡、柴和超级测试为该API编写测试。这些测试大多是集成测试。 一个测试可能如下所示: 实际的测试工作得很好,但是现在我需要能够查看这些测试的代码覆盖率。我必须知道我没有充分测试什么。我尝试使用摩卡的测试覆盖率: 和伊斯坦布尔的: 两者都面临着同样的问题: 你看,

  • 我的应用程序中有一些子模块。有些我希望有代码覆盖率规则,有些我希望完全免除。 我的项目的根POM继承自父POM,该POM已将JaCoCo配置为: 在一个子模块中,我希望有50%的代码覆盖率,我已将JaCoCo配置为: 此模块的代码覆盖率绝对为零,但运行mvn clean verify不会产生任何错误。 我想也许我必须在根POM中定义它,所以我这样做: mvn clean verify是否产生错误:

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 问题内容: 我正在使用Mocha测试我的NodeJS应用程序。我无法弄清楚如何使用其代码覆盖功能。我尝试使用Google搜索,但没有找到任何合适的教程。请帮忙。 问题答案: 您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将使您震惊。通过Mocha测试后,请尝试以下操作: 现在,只需将命令nyc放在现有测试命令的前面,例如: