如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml
Posted
技术标签:
【中文标题】如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml【英文标题】:how to get coverage report as jacocoTestReport.xml in React project 【发布时间】:2021-07-10 09:58:58 【问题描述】:我正在为我的 React 项目使用 jenkins 管道来执行测试、构建和部署步骤。
我将 sonarqube 与我的项目集成。但是声纳的 jacoco 没有评估我的覆盖率报告,它是通用覆盖率格式(test-report.xml)
有没有办法在我的 React 项目中将我的报告作为“jacocoTestReport.xml”而不使用 maven 或 gradle。我找不到任何文档或第 3 方工具?
我的相关流水线脚本:
sh '''
$scannerHome/bin/sonar-scanner \
-Dsonar.projectKey=xxxxxxxxxxxxxx \
-Dsonar.sources=. \
-Dsonar.sources=. \
-Dsonar.coverage.jacoco.xmlReportPaths=test-report.xml \
-Dsonar.testExecutionReportPaths=test-report.xml \
-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info \
-Dsonar.coverageReportPaths=test-report.xml \
-Dsonar.host.url=https://xxxxxxxxxxxxxx \
-Dsonar.login=xxxxxxxxxx
'''
相关错误如下:
: Sensor Generic Coverage Report
INFO: Parsing /var/jenkins_home/workspace/**********/test-report.xml
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 36.948s
INFO: Final Memory: 49M/690M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
ERROR: Error during parsing of the generic coverage report '/var/jenkins_home/workspace/*******/test-report.xml'. Look at SonarQube documentation to know the expected XML format.
ERROR: Caused by: Unknown XML node, expected "coverage" but got "testExecutions" at line 2
【问题讨论】:
【参考方案1】:我假设你只是在构建一个 react 应用程序,因此它只是 JavaScript/TypeScript,我的回答是基于这个假设。
如果是这种情况,您可以简单地忽略 sonar.coverage.jacoco.xmlReportPaths
属性。您已经通过lcov.info
文件提供了该信息。 Sonarqube 将能够从此文件中读取覆盖信息。
此外,test-report.xml
通常只包含已执行测试及其结果的列表。您通常不会在其中找到任何类型的覆盖信息。因此,您的构建也可能在 sonar.coverageReportPaths
属性上中断(我的建议也是删除该属性)。
【讨论】:
以上是关于如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml的主要内容,如果未能解决你的问题,请参考以下文章
使用 Sonarrunner 和 Gradle 从 Jacoco 报告中排除包
Karma + Browserify + Jasmine + 伊斯坦布尔 + React 覆盖