SonarQube -integrationTest.exec -sonar Runner (Gradle) 或“sonar-runner”命令 - 显示 0.0% 覆盖率

2023-11-25

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

梯度命令: “gradle clean 构建集成测试”

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

  1. 测试执行程序
  2. 集成测试.exec

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

当我运行“gradle clean build IntegrationTest sonarRunner -Dxxx.xxx=yyy -Dyyy.xx=zzz”时,即通过使用 -D 选项传递 sonar-project.properties 文件中提到的所有声纳变量,它可以工作,但结果相同SonarQube 项目的仪表板。项目的声纳仪表板有两个为单元/集成测试配置的小部件,我包括用于显示总体覆盖范围的 IT 测试。总体覆盖率显示为 34.5%(这是单元测试%值)。在此操作期间,Sonar 确实看到了 test.exec、integrationTest.exec,并且还自动生成了overall-xxx.exec 文件。

NOTE:我不知道在单独的 putty/linux 控制台上启动 tomcat 时,或者在 Gradle 构建脚本中,为 Jacoco 提供任何值或设置 JAVA 代理。我已经获得了integrationTest.exec 文件和test.exec 文件,因此不确定IT 测试完成运行后是否需要停止JVM。我认为我不需要这些,因为我有 .exec 文件的有效文件大小。

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

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

-bash-3.2$猫声纳项目.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

缩小原因:我认为这是由于集成测试的 .exec 文件造成的。为了证明这一点:我将 UT exex 文件传递​​给 Sonar 变量中的两个 reportsPaths,即以下内容,SonarQube 选择了 UT/IT 测试覆盖范围。这证明,如果用于 IT 测试的 .exec 文件很好(我认为是但我需要仔细检查),那么 Sonar 将选择 .exec 文件并显示有效的覆盖率 % 而不是 0.0%。注意:以下只是为了证明 Sonar 是否正在选取值。 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

好的,找到问题了。我正在 Gradle 中运行 IntegrationTest 任务,并且没有将 jacocoagent.jar (根据 Jacoco 文档)附加到目标 JVM (Tomcat 的实例)范围。完成此操作后,我从 Gradle 中的 IntegrationTest 任务中删除了 jacoco { ... } 部分(build.gradle 或 GRADLE_HOME/init.d/some.common.gradle 文件,因为这会将 jacoco 代理附加到运行 Gradle 的 Java JVM )。现在,一旦 jacocoagent.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.sh 脚本来停止 Tomcat 会话/JVM 实例。 Tomcat 停止后,我看到 jacocoIT.exec 文件大小显着增加,这是有效的最终 jacocoIT.exec 文件(我需要 sonarRunner Gradle 任务或 sonar-runner 可执行文件来选择并成功将 IT 代码覆盖率数据推送到项目的声纳仪表板)。完成后,我获得了 UT + IT 及其组合代码覆盖率。

sonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec
sonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SonarQube -integrationTest.exec -sonar Runner (Gradle) 或“sonar-runner”命令 - 显示 0.0% 覆盖率 的相关文章

  • JaCoCo 具有微服务项目架构?

    我的项目由 6 个 Java 微服务组成 我试图弄清楚如何将 Jacoco 的 html 报告合并到一份整体覆盖率报告中 就目前情况而言 我最终为每项服务提供了一份报告 如果能有一份汇总报告就好了 这样我就可以更轻松地将其放入我们的 CI
  • 如何在 Azure 仪表板中获取声纳门状态

    有人可以帮助我如何在 Azure 仪表板中获取声纳门状态作为小部件吗 Azure 市场中有一个名为 质量门 的小部件 但它不起作用 是否有可能在 Azure 仪表板中拥有此仪表板 SQ 项目概述页面的右下角有一个标有 获取项目徽章 的按钮
  • 如何在嵌入式上进行代码覆盖

    我为非 POSIX 嵌入式系统编写了一个项目 因此我无法使用 gcc 选项 coverage 我没有读或写 我还能做什么来产生类似 gcov 的输出 我确实有输出功能 它可以通过具有嵌入式跟踪的处理器 公开跟踪端口的板设计以及合适的硬件调试
  • 尝试将 Jacoco 代码覆盖率导入到 SonarQube 时出现问题:无法导入文件的覆盖率信息,覆盖率数据无效

    我在尝试将 Jacoco 代码覆盖率导入 SonarQube 时遇到一些问题 我正在使用 SonarQube 和 Jacoco 来导入测试覆盖率结果 https docs sonarqube org display PLUG Java Un
  • 在测试时尝试渲染组件的浅层副本时,“导航栏指的是一个值,但在这里被用作类型”

    我正在尝试为我的 React 组件编写一个测试 使用 TypeScript Jest 作为我的测试运行程序 并使用 Enzyme 来测试我的 React 组件 每当我将组件传递到shallow酶函数 我收到 ts 错误 Navbar 指的是
  • 集成测试和功能测试有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 功能测试和集成测试相同吗 您通过单元测试开始测试 然后在完成单元测试后进行集成测试 对整个系统进行测试 功能测试与集成测试相同吗 您仍
  • scala sbt 在多项目上测试运行设置和清理命令一次

    我知道我可以通过修改 testOptions 在 sbt 中添加设置和清理代码以用于测试阶段 例如 val embedMongoTestSettings Seq Setting Seq testOptions in Test Tests S
  • 无法让 gcovr 生成覆盖率数据

    使用 gcovr 3 2 我尝试为我使用 Xcode 5 0 开发和运行的一组单元测试生成代码覆盖率报告 我已成功配置 Xcode 以在执行测试后生成 gcda 文件 并且我可以使用 CoverStory 查看结果 但是 当我尝试使用 gc
  • 如何在.net core 2应用程序中获取代码覆盖率报告

    我是 dotnet core 2 0 的新手 不知道如何提取代码覆盖率报告 dotnet 测试命令 寻求社区的帮助 这是我用于生成 dotnet 核心的 bat 文件 这将 弹出 一个index htm 文件 这只是我在这里找到的 bat
  • Python 模拟中的模拟属性?

    我使用起来相当困难mock在Python中 def method under test r requests post http localhost post print r ok prints
  • GNU C 库中如何测试三角函数?

    我试图找出如何最好地编写科学和 或数学函数的单元测试 我搜索了 GNU C 库的源代码以进行单元测试sin and cos 功能并遇到了atest sincos c源文件 复制如下 可以发现here https sourceware org
  • 为什么我必须点击两次才能使用 selenium 提交输入

    ENV 铬 32 webdriver2 8 我正在使用 selenium java 单击提交输入 但我需要单击两次才能激活提交操作 输入代码
  • 如何检查水豚中的复选框?

    我正在使用 Rspec 和水豚 我怎样才能写一个步骤来检查checkbox 我试过了check按价值但它找不到我的checkbox 我不知道该怎么做 因为我实际上有相同的 ID 但值不同 这是代码
  • Symfony2 功能测试会话持久性

    我正在尝试在 Symfony 中进行一些功能测试 但目前我的会话遇到了问题 我执行了一段代码 它似乎有效 但容器的会话中没有存储任何内容 我有一个表格 您可以在其中设置数据 当您提交它时 它会检查值并将其存储在会话中 然后它重定向到另一个页
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 使用覆盖率信息测试 Go 中的 os.Exit 场景 (coveralls.io/Goveralls)

    这个问题 如何在 Go 中测试 os exit 场景 https stackoverflow com questions 26225513 how to test os exit scenarios in go 以及其中得票最高的答案 列出
  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • sonarqube 缺少项目仪表板

    我有 SonarQube 6 1 当我从主仪表板项目小部件中单击项目条目时 我会进入项目主页 其中显示 质量门已通过 并列出了一些问题 错误 漏洞 代码异味 和 重复 在左侧靠近顶部的项目名称下方 有一个 主页 图标 右侧显示 问题 措施
  • 是否有保留用于测试/示例的社会安全号码?

    是否有一个按惯例使用的规范 测试 SSN 因此所有看到它的人都知道它不是真正的 SSN 有多个号码组和一些永远不会被分配的特定号码 数字与任何数字组中的所有零 000 xx 00 xx 0000 http www ssa gov histo

随机推荐

  • Python argparse --toggle --no-toggle 标志

    有没有简单直接的使用方法 toggle and no togglePython 的 argparse 的标志 现在我正在使用类似于以下内容的东西 import argparse parser argparse ArgumentParser
  • for循环条件下方法调用的效率

    我正在编写一个游戏引擎 其中一组对象保存在一个ArrayList使用 for 循环进行迭代 显然 效率相当重要 所以我想知道循环的效率 for String extension assetLoader getSupportedExtensi
  • React 高阶组件强制重新渲染包装组件

    我正在努力了解如何在高阶组件中正确实现此验证行为 编辑 TLDR 感谢用户 noa dev 的出色建议 我在这里创建了一个 React Fiddle https jsfiddle net 8nLumb74 1 来展示问题 简而言之 为什么我
  • 使用 Google Directions API 问题绘制具有超过 8 个航点的路线图

    我正在尝试绘制具有多个航点的路线图 根据谷歌API 您只能使用8个航点 对于业务开发 您只能使用23个航点 但这不足以绘制准确的旅行地图 我得到了一个值得注意的解决方案链接在这里但没有正常工作 该解决方案在某种程度上存在一个问题 它无法绘制
  • 如何获取eclipse的JDT源码?

    我正在尝试编写一个Eclipse插件 但我发现默认情况下没有源 我在 www eclipse org 上搜索 但没有找到任何东西 我的日食是3 6 2 哪里可以得到JDT的源码 似乎在最新版本的 Eclipse 至少是 Juno 和 Kep
  • Solr - 不区分大小写的搜索不起作用

    我想对字段应用不区分大小写的搜索myfield在 solr 中 我用谷歌搜索了一下 我发现我需要申请LowerCaseFilterFactory字段类型和字段应该是solr TextFeild 我将其应用到我的schema xml并重新索引
  • 在 matlab exe 中使用标准 io 流:stdin 和 stdout

    Question 我希望它能够 监听 正在运行 已编译 的 Matlab 可执行文件中的标准输入流 我相信这就是完成的方式c或类似的语言 include stdio h fgets line 256 stdin 或者更详细地说 它可以这样使
  • std::bind 类内部的静态成员函数

    我正在尝试存储一个函数以便稍后调用 这是一个片段 这工作正常 void RandomClass aFunc int param1 int param2 double param3 bool isQueued false If some co
  • Maven 生成实际的 jar 作为 .jar.original 而不是 .jar 文件

    基本上我有一个 Maven 项目 我正在尝试使用生成我的项目的 jarmvn clean compile package通过 spring 工具套件使用下面的 pom xml 执行命令后 我在我的目录中生成了2个jar文件target文件夹
  • Crashlytics iOS - 第 0 行崩溃 - Swift 源

    我目前在某些 Swift 源文件发生崩溃时遇到问题 事实上 在 Crashlytics 上我有一个关于线路和崩溃原因的奇怪信息 它告诉我源已经崩溃了line 0它给了我一个SIGTRAP错误 我读到当线程遇到断点时会发生此错误 但问题是 当
  • System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity 的奇怪问题

    我们正在编写一个系统 允许用户通过 Intranet 上的 Web 应用程序更改其帐户密码 起初 一切似乎都进展顺利 在开发过程中 我们的测试帐户的密码可以毫无问题地更改 然而 当我们让系统上线时 我们开始遇到问题 以下是症状 起初 一切都
  • SQL服务器触发器

    我有一个这样的表结构 create table status master Name varchar 40 status varchar 10 如果状态列值更新值 我需要为状态列创建触发器 如果失败 则触发器调用一个插入命令 例如 inse
  • 如何在空间和频率域中的每个尺度和方向创建 64 个 Gabor 特征

    通常 Gabor 滤波器 顾名思义 用于过滤图像并提取与过滤方向相同的所有内容 在这个问题中 您可以看到比此中编写的代码更有效的代码Link 假设 4 个方向上有 16 个尺度的滤波器 因此我们得到 64 个 gabor 滤波器 scale
  • 何时使用 FormGroup 与 FormArray?

    表格组 A 表格组将每个子 FormControl 的值聚合为一个 对象 以每个控件名称作为键 const form new FormGroup first new FormControl Nancy Validators minLengt
  • python 守护进程中的子进程终止

    我在 python 中有damon 它运行外部程序 subprocess call java jar start jar 当我杀死守护进程时 子进程 java 仍在运行 我怎样才能让子进程也被杀死 Use subprocess Popen
  • 使用 Rspec 测试 rake 任务不接受参数

    根据我的说法 我正在尝试为我的 rake 任务之一编写 Rspec 测试斯蒂芬 哈格曼的这篇文章 lib tasks retry rake namespace retry do task message message id gt envi
  • 寻找最小全语法窗口的有效算法?

    A 全语法窗口是包含所有 26 个字母表的较大文本片段的子字符串 引用维基百科的一个例子 给出以下文本 我唱了 还以为自己唱得很好 但他只是用一种非常好奇的表情抬头看着我的脸 然后说 你唱歌多久了 小姐 文本中最小的全语法窗口是这个字符串
  • 错误:此模板尝试加载组件程序集“Microsoft.VisualStudio.SmartDevice”

    我安装了 Visual studio 2015 并尝试为 Windows Phone 8 1 创建测试应用程序 当我创建一个新项目时 我收到以下消息 关于如何解决这个问题有什么建议吗 这是解决方案 打开 Visual Studio 并转到T
  • 使用反射添加EventHandler

    我有这段代码不起作用 public CartaoCidadao InitializeComponent object o WebDAV Classes SCWatcher LoadAssembly MethodInfo method thi
  • SonarQube -integrationTest.exec -sonar Runner (Gradle) 或“sonar-runner”命令 - 显示 0.0% 覆盖率

    运行基于 Gradle 的构建和集成测试后 我在 build jacoco 文件夹中成功生成了 Jacoco 的 2 个 exec 文件 梯度命令 gradle clean 构建集成测试 完成后 它会在 build jacoco 文件夹下生