当前位置: 首页 > 知识库问答 >
问题:

声纳Qube - 集成测试.exec - 声纳运行器(Gradle)或“声纳运行器”命令 - 显示0.0%的覆盖率

柯良骏
2023-03-14

在运行基于 Gradle 的构建和集成测试后,我在“构建/jacoco”文件夹中成功生成了 2 个 .exec 文件。

gradle命令:“gradle清洁构建集成测试”

完成后,它将在build/jacoco文件夹下生成以下.exec文件。

  1. test.exec
  2. integrationTest.exec

以下是我的sonar-project.properties文件。当我在Linux上运行“sonar-runner”时,提示它完成了,但在这个项目的SonarQube仪表板上,我看到单元测试显示大约34.5%,但集成测试显示0.0%。都是。exec文件的大小有效。我还在网上写了"猫"。exec文件,并将输出传送到Linux中的“strings”命令,并看到integrationTest.exec确实命中了测试函数——我只有1个。java文件。

当我运行“gradle clean build integrationTest sonarRunner-Dxxx.xxx=yyy-Dyyy.xx=zzz”时,即通过传递声纳项目中提到的所有声纳变量。属性文件使用-D选项,它可以工作,但在SonarQube项目的仪表板上的结果相同。该项目的sonar仪表板具有为单元/集成测试配置的两个小部件,我将包括显示总体覆盖率的IT测试。总体覆盖率为34.5%(即单元测试百分比值)。声纳确实看到了测试。执行,集成测试。执行并自动生成总xxx。在该操作期间,也可以使用exec文件。

注意:我不在哪儿 - 在单独的腻子/ Linux控制台上启动雄猫 - 或者在Gradle构建脚本中,为Jacoco提供任何值或设置JAVA代理。我已经得到了集成测试.exec文件和测试.exec文件,所以不确定一旦IT测试完成运行,JVM是否需要停止。我不认为我需要这些,因为我有.exec文件的有效文件大小。

我的 ?: - 为什么即使我正确设置/传递以下变量,声纳也没有在仪表板上获得 IT 覆盖:

sonar.jacoco.itReportPath=build/jacoco/integrationTest.exec

-bash-3.2$猫sonar-project.properties

# Root project information
sonar.projectKey=com:company:product:ProjectA
sonar.projectName=ProjectA
sonar.projectVersion=1.0
# optional description
sonar.projectDescription=ProjectA Service

#Tells SonarQube that the code coverage tool by unit tests is JaCoCo
sonar.java.coveragePlugin=jacoco

#Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
sonar.dynamicAnalysis=reuseReports

# Some properties that will be inherited by the modules
sonar.sources=src/java,test/java,src/java-test

# Sonar Unit Test Report path
sonar.jacoco.reportPath=build/jacoco/test.exec

# Sonar Integration Test Report Path
sonar.jacoco.itReportPath=build/jacoco/integrationTest.exec

sonar.junit.reportsPath=build/UT/results

# Sonar Binaries
sonar.binaries=build/classes/main

共有1个答案

越嘉石
2023-03-14

缩小原因范围:我认为是由于。集成测试的exec文件。为了证明这一点:我将UT exex文件传递给Sonar变量中的两个报告路径,即下面的和SonarQube选择了两个UT/IT测试覆盖。这证明了如果。用于IT测试的exec文件是好的(我认为它是好的,但我需要仔细检查),然后Sonar将选择。exec文件并显示有效的覆盖率%而不是0.0%。注意:以下只是为了证明声纳是否在选择数值。itReportPath变量应该使用。由Jacoco集成测试生成的exe文件。

sonar.jacoco.reportPath=build/jacoco/test.exec

# Sonar Integration Test Report Path
#sonar.jacoco.itReportPath=build/jacoco/testintegrationTest.exec
sonar.jacoco.itReportPath=build/jacoco/test.exec

OK找到了问题。我正在Gradle中运行integrationTest任务,没有附加JacoAgent。jar(根据Jacoco文档)到目标JVM(Tomcat的实例)范围。一旦我这样做了,我就从Gradle中的integrationTest任务中删除了jacoco{…}部分(build.Gradle或Gradle_HOME/init.d/some.common.Gradle文件,因为它将jacoco代理附加到运行Gradle的Java JVM)。现在,曾经是JacoAgent。jar被附加到Tomcat的JVM(根据下面的行,我在Tomcat的startup.sh脚本中添加了变量,并将变量添加到启动Tomcat的命令中),然后我运行Gradle(integrationTest)任务来运行IT测试。

PROJ_EXTRA_JVM_OPTS=-javaagent:tomcat/jacocoagent.jar=destfile=build/jacoco/IT/jacocoIT.exec,append=false

然后,当Gradle正在进行测试时,运行测试,我得到了一个文件(给定位置的jacocoIT.exec),文件大小有所不同,但这还不是最后一个。我必须通过运行Tomcat的stop来停止Tomcat会话/JVM实例。sh脚本。雄猫一停下来,我就看到了杰科科特。exec文件大小显著增加,这是有效的最终jacocoIT。exec文件(我需要sonarRunner Gradle任务或sonarRunner可执行文件来选择并成功地将其代码覆盖率数据推送到项目的sonar仪表板)。完成后,我得到了UT和它的组合代码覆盖率。

sonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec
sonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec
 类似资料:
  • 我使用的声纳版本6.7.6和maven 3.3.9我有以下配置在我的Jenkins它生成的雅科报告和测试用例报告预期如下路径。但是我看到Sonarqube的代码覆盖率为0%,有人能帮我吗? 马文戈尔 -Dmaven.test.failure.ignore=true -U clean org.jacoco:jacoco-maven-plugin:1.1.1:prepare-agent test 家长

  • 我花了好几天时间试图让SonarQube显示Maven Jacoco插件的单元测试代码覆盖率。 我卡住的错误消息是 目标/站点/Jacoco/index.html下的报告按预期生成,并包含行突出显示和行号。我读过,如果编译的类中不包含调试信息,那么突出显示和行号将不会显示在此报告中。 我已经阅读了Maven默认包含调试信息,但是,以防万一我在项目maven-编译器插件设置中包含以下配置 我的设置中

  • 几天来,我一直在努力将JaCoCo的报告集成到SonarQube 5.0.1中。我总是在声纳曲中阅读0.0%的覆盖率。 TeamCity 9生成了一个testresults.xml和一个jacoco.exec文件,我将其用于声纳转轮。TeamCity显示覆盖范围,因此exec文件接缝很好。Java代码分析基本上在SonarQube(FindBugs、PMD等)中工作。 我有一个仍在使用Ant构建的

  • 我正在运行SonarQube 4.2,并且正在启动来自Jenkins的多项目(主要是JavaScript)分析。但是,我在单元测试中没有得到任何数据——这些数据是用Intern/伊斯坦布尔生成的,并输出到Junit格式。日志中没有错误。我知道报告格式很好,因为它在Jenkins中显示得很好 我的配置是:

  • 我有一个基本的maven多模块,父模块是POM,其子模块是domain、service和Web。 我已经在pom父级中添加了jacoco插件和所需的配置,以便将测试覆盖率报告附加到一个Sonar很容易找到的文件中。 我的问题是,Sonar只显示第一个模块的测试覆盖范围(是domain)(即使我用编辑器打开文件,看到其他模块的类名被追加在其中)。 这种配置会有什么问题? 为了它的价值,声纳分析被称为

  • 问题内容: 我想在我们的jenkins服务器上安装sonarQube。 我可以找到的文档告诉我在以下位置配置声纳运行器 但是那里没有“声纳赛跑者”选项。我配置了声纳服务器时有一个“声纳”选项,并且声纳插件已安装且是最新的。 如何显示声纳运行器配置? (我们希望独立的声纳作业不是Maven,因为这是一个没有Maven的项目。) 问题答案: 好。所以,如果我了解得很好: 在插件管理器中进入Manage