将 JUnit 报告推送到 Sonarqube
Push JUnit report to Sonar Qube
我们正在使用某种自定义模板引擎,其中包含正常的 HTML 语法和一些自定义标记,除此之外,它还可以包含某种在服务器端执行的脚本。我们编写了一些单元测试来证明这些自定义模板的内容,并在使用了一些被禁止的脚本元素时引发错误。
我们正在使用 Jest 作为测试运行器,我们正在使用 jest-sonar-reporter
创建 Sonar Qube 测试报告。我已将 sonar.tests
设置为指向我们的测试 sonar.tests=spec
。在 Sonar Qube UI Administration > Web area 下,我也用我们的扩展扩展了 sonar.web.file.suffixes
。当我们在部署管道中启动 Sonar Qube 时,我在日志中看到
07:08:49.291 INFO: Sensor Generic Test Executions Report
07:08:49.291 WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.
07:08:49.291 INFO: Parsing /codebuild/output/src915641274/src/reports/test-report.xml
07:08:49.491 INFO: Imported test execution data for 0 files
07:08:49.491 INFO: Test execution data ignored for 2 unknown files, including:
/codebuild/output/src943613774/src/spec/isml.spec.js
/codebuild/output/src943613774/src/spec/files.spec.js
我们的声纳-project.properties看起来像这样:
sonar.host.url=<host_url>
sonar.login=<token>
sonar.projectKey=<project_key>
sonar.projectName=<project_name>
sonar.sources=cartridge,spec
sonar.verbose=true
sonar.inclusions=**/js/**/*.js,**/templates/**/*.isml
sonar.tests=spec
sonar.testExecutionReportPaths=reports/test-report.xml
在这个项目中,我有 js
和 web
作为语言。如果我进入 Sonar Qube UI 并在 Measures > Coverage > Tests 下检查这个项目,我没有看到任何导入的覆盖测试。所以我的问题是我是否理解了 JUnit 覆盖率导入错误,或者我在我的 Sonar Qube 配置中遗漏了什么?
解决方案:
<file path="[value]">
处 JUnit 报告中的 [value]
需要与 sonar.tests=
值相关。
project
├── src
│ └── ...
└── spec
├── isml.spec.js
└── files.spec.js
所以在我的例子中,我使用了 sed 命令并修剪了路径的 "absolute" 部分。
我们正在使用某种自定义模板引擎,其中包含正常的 HTML 语法和一些自定义标记,除此之外,它还可以包含某种在服务器端执行的脚本。我们编写了一些单元测试来证明这些自定义模板的内容,并在使用了一些被禁止的脚本元素时引发错误。
我们正在使用 Jest 作为测试运行器,我们正在使用 jest-sonar-reporter
创建 Sonar Qube 测试报告。我已将 sonar.tests
设置为指向我们的测试 sonar.tests=spec
。在 Sonar Qube UI Administration > Web area 下,我也用我们的扩展扩展了 sonar.web.file.suffixes
。当我们在部署管道中启动 Sonar Qube 时,我在日志中看到
07:08:49.291 INFO: Sensor Generic Test Executions Report
07:08:49.291 WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.
07:08:49.291 INFO: Parsing /codebuild/output/src915641274/src/reports/test-report.xml
07:08:49.491 INFO: Imported test execution data for 0 files
07:08:49.491 INFO: Test execution data ignored for 2 unknown files, including:
/codebuild/output/src943613774/src/spec/isml.spec.js
/codebuild/output/src943613774/src/spec/files.spec.js
我们的声纳-project.properties看起来像这样:
sonar.host.url=<host_url>
sonar.login=<token>
sonar.projectKey=<project_key>
sonar.projectName=<project_name>
sonar.sources=cartridge,spec
sonar.verbose=true
sonar.inclusions=**/js/**/*.js,**/templates/**/*.isml
sonar.tests=spec
sonar.testExecutionReportPaths=reports/test-report.xml
在这个项目中,我有 js
和 web
作为语言。如果我进入 Sonar Qube UI 并在 Measures > Coverage > Tests 下检查这个项目,我没有看到任何导入的覆盖测试。所以我的问题是我是否理解了 JUnit 覆盖率导入错误,或者我在我的 Sonar Qube 配置中遗漏了什么?
解决方案:
<file path="[value]">
处 JUnit 报告中的 [value]
需要与 sonar.tests=
值相关。
project
├── src
│ └── ...
└── spec
├── isml.spec.js
└── files.spec.js
所以在我的例子中,我使用了 sed 命令并修剪了路径的 "absolute" 部分。