发布代码覆盖率在 Azure DevOps 中找不到覆盖率文件

2024-01-07

我正在使用节点14.x和开玩笑26.x。有一个npm testpackage.json 文件中的脚本包含以下内容:

cross-env NODE_ENV=test jest --coverage --forceExit

当我在本地运行它时,它会生成代码覆盖率报告./coverage目录。的内容./coverage目录如下:

lcov-report (folder)
clover.xml
coverage-final.json
lcov.info

看起来像clover.xml包含代码覆盖率报告。有更多详细信息可以在lcov-report文件夹。 我已按如下方式设置 Azure DevOps 管道以实现代码覆盖率:

...
- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: JUnit
    testResultsFiles: '**/junit.xml'

# Publish code coverage results
# Publish Cobertura or JaCoCo code coverage results from a build
- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/clover.xml'

运行管道后,Azure DevOps 似乎没有找到cover.xml文件。我收到以下错误:

##[debug]Result: true
##[debug]Report directory: /home/vsts/work/_temp/cchtml
Reading code coverage summary from '/home/vsts/work/1/s/coverage/clover.xml'
##[warning]No coverage data found. Check the build errors/warnings for more details.
##[debug]Processed: ##vso[codecoverage.publish codecoveragetool=Cobertura;summaryfile=/home/vsts/work/1/s/coverage/clover.xml;reportdirectory=/home/vsts/work/_temp/cchtml;]

我还尝试了以下选项summaryFileLocation但都导致了同样的错误。

'**/coverage/clover.xml'
'$(System.DefaultWorkingDirectory)/**/coverage/clover.xml'

我理解的格式是clover.xml可能不一样Cobertura or JaCoCo,但至少 Azure 应该能够找到该文件。 我缺少什么?


我无意中发现了一个方法。

看起来像Jest可以生成cobertura覆盖报告。需要在 Jest 配置中添加。我在中添加了以下内容jest.config.js:

coverageReporters: ['text', 'text-summary', 'clover', 'cobertura']

Jest生成了cobertura覆盖文件位于:

./coverage/cobertura-coverage.xml

接下来我修改Azure管道文件如下:

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml'

进行此更改后,当我运行管道时,Azure DevOps 可以找到该文件并显示覆盖率报告!

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

发布代码覆盖率在 Azure DevOps 中找不到覆盖率文件 的相关文章

随机推荐