Sonarqube忽略测试执行数据

时间:2018-02-14 09:57:41

标签: unit-testing sonarqube sonar-runner

我正在尝试使用sonar.testExecutionReportPaths导入通用测试执行。 我正在使用doc中提供的xml文件格式。 我在path属性中使用文件的完整路径。文件存在。

我不明白为什么我的文件会被忽略。有什么想法吗?

sonar.testExecutionReportPaths = "C:\Program Files (x86)\Jenkins\workspace\CI\Sonarqube.xml"
sonar.test.inclusions = "**\*Test*.cs"

以下是Sonar Runner的日志:

INFO: Sensor Generic Test Executions Report
INFO: Parsing C:\Program Files (x86)\Jenkins\workspace\CI\Sonarqube.xml
WARNING: WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.
INFO: Imported test execution data for 0 files
INFO: Test execution data ignored for 5 unknown files, including:
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\A-Test.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\B-Tests.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\C-Tests.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\D-Test.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\E-Test.cs
INFO: Sensor Generic Test Executions Report (done) | time=265ms

以下是Generic XMl文件的一部分:

<testExecutions version="1">
  <file path="C:\Program Files (x86)\Jenkins\workspace\CI\Tests\A-Test.cs">
    <testCase name="My A Test" duration="1210" />
  </file>
  <file path="C:\Program Files (x86)\Jenkins\workspace\CI\Tests\B-Tests.cs">
    <testCase name="My B Test" duration="566" />
  </file>
</testExecutions>

谢谢!

3 个答案:

答案 0 :(得分:0)

我尝试使用 sonar.testExecutionReportPaths 导入通用测试执行。我使用上述问题中提到的xml文件格式。

          

但我的SonarQube没有使用以下日志信息导入报告:

INFO: Quality profile for js: Sonar way

INFO: Sensor Generic Test Executions Report
WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.
INFO: Parsing C:\Program Files (x86)\Jenkins\workspace\Venkata-test-master\JS_JUnit_Report\utut_report.xml
INFO: Imported test execution data for 0 files
INFO: Test execution data ignored for 36 unknown files, including:
..\my-bob\App\JsUnitTests\Tests\microsite\Utilities\persistBOBstate.test.js
..\my-bob\App\JsUnitTests\Tests\microsite\actions\action-get-delegation-data.test.js
..\my-bob\App\JsUnitTests\Tests\microsite\actions\action-loading-bar-process-completed.test.js
..\my-bob\App\JsUnitTests\Tests\microsite\actions\action-loading-bar-process-received.test.js
..\my-bob\App\JsUnitTests\Tests\microsite\actions\action-nb-since-date-selected.test.js

即使我添加了-Dsonar.test.inclusions = ** / * .test.js,但没有任何效果。

答案 1 :(得分:0)

它为我添加了什么: sonar.testExecutionReportPaths=coverage/test-report.xml sonar.tests=src sonar.test.inclusions=**/*.spec.ts到我的sonar-project.properties文件。 “ sonarqube-scanner-node”。

答案 2 :(得分:0)

基本上,如果要使声纳单元测试计数正确显示,则需要确认这些部分,这一定是错误之一

  • 将配置sonar.testExecutionReportPaths=xx/test-report.xml添加到属性中,并确保路径正确。
  • 检查您的test-report.xml file字段和path内容(file path="C:\Program Files (x86)\Jenkins\workspace\CI\Tests\A-Test.cs"),确保路径与本地或服务器中的文件相同,例如,如果您在docker内部运行此代码,则需要检查docker容器中的A-Test.cs文件路径,是否与xml文件中定义的路径相同。

最后,我通过执行此检查解决了我的问题,希望它可以为您提供帮助。 标准文档here

中有一些技巧
* The root node should be named testExecutions.
* Its version attribute should be set to 1.
* Insert a file element for each test file. 
* Its path attribute can be either absolute or relative to the root of the module.

顺便说一句,您的声纳记录中有一个警告:

WARNING: WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.

但是我可以看到您已经使用testExecutionReportPaths,您可能需要检查声纳是否运行了最新版本的设置,并且package.json配置中的选项soanr56x是否为假。

相关问题