如何在SonarQube服务器中上传通用测试执行报告?

how to upload generic test execution report in a sonarqube server?

提问人:nizery 提问时间:11/14/2023 最后编辑:nizery 更新时间:11/15/2023 访问量:57

问:

在一组微服务的应用程序复合体上,我使用 JMeter 来执行 API 测试和用户场景测试(请参阅此处)。

我想在 sonarqube 中管理这些测试状态和持续时间,并在 sonarqube 中上传这些测试结果。

生成通用测试执行报告很容易,格式非常简单。( 看这里 )

<testExecutions version="1">
  <file path="testx/ClassOneTest.xoo">
    <testCase name="test1" duration="5"/>
    <testCase name="test2" duration="500">
      <skipped/>
    </testCase>
    <testCase name="test3" duration="100">
      <failure/>
    </testCase>
    <testCase name="test4" duration="500">
      <error/>
    </testCase>
  </file>
</testExecutions>

但该文档解释说:“与覆盖率报告不同,报告中存在的文件必须是测试文件名,而不是测试所涵盖的源代码文件。

但是在通用测试执行报告的上下文中,什么是测试文件名?

JMX 文件不是 JUnit 文件,如果我将元素设置为 sonarqube 服务器会接受它作为测试文件名吗?<file path="jmx/api/scenario1.jmx">

Sonarqube 的版本是 sonarqube-10.2.1.78527。

声纳扫描仪的版本是 5.0.1 。

sonarqube sonarqube-scan sonar-runner

评论


答:

1赞 andreypc 11/15/2023 #1

简短的回答 - 在报告中引用 jmx 不起作用,但存在解决方法

现在,回答您的问题...

  1. 什么是测试文件名?

实际上,SonarQube 通过两个范围来区分文件 - 源和测试。任何位于“tests”范围内(由 sonar.tests 参数定义)的文件都被视为测试文件。在通用测试执行报告的上下文中,“测试文件名”的含义相同 - 它是在“测试”范围内定义的文件。查看更多关于示波器的故事

  1. SonarQube 服务器会接受它作为测试文件名吗?

引用文件的类型很重要。SonarQube 尝试检测文件语言,但对于“.jmx”(至少在 SonarQube CE 9.9 中)将无法这样做。因此,您的“jmx/api/scenario1.jmx”很可能会以错误“跳过文件”结束......,因为它没有已知语言,即使您将此文件定义为“测试”范围的一部分。一种可能的解决方法是将 .jmx 重命名为 .xml。这样语言检查就会通过。

评论

0赞 nizery 11/15/2023
您好,感谢您的回答。我测试它。我希望JMeter接受xml文件...
0赞 nizery 11/16/2023
嗨,@andrepyc,您的答案很好,而且效果很好。对于包含 jmx 文件的模块的 maven 项目,配置有点棘手。jmx 模块必须添加到模块列表 (sonar.modules) 中,因为 sonar.sources 设置为 /src/main/java,因此此 jmx 模块必须包含文件夹 /src/main/java。然后它必须包含一个包含 jmx 文件的文件夹 /src/test。但是在通用报告中,文件名是相对于项目的基目录(根模块)定义的,因此它必须是 jmx/src/test/scenario1.jmx ...
0赞 nizery 11/17/2023
如果我可以@andreypc,这个链接 linkedin.com/pulse/...提供了我问题的上下文。我实现了上传 jmx 测试生成的覆盖率报告,现在多亏了您的回答,我上传了测试报告。
1赞 nizery 11/17/2023
如何管理jmx扩展在这里描述: community.sonarsource.com/t/...