- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在运行基于 Gradle 的构建和集成测试后,我通过 Jacoco 在“build/jacoco”文件夹中成功生成了 2 个 .exec 文件。
Gradle 命令:“gradle clean build 集成测试”
完成后,它会在 build/jacoco 文件夹下生成以下 .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 文件中提到的所有 Sonar 变量,它可以工作但是SonarQube 项目仪表板上的结果相同。项目的 Sonar 仪表板为单元/集成测试配置了两个小部件,我包括用于显示整体覆盖率的 IT 测试。总体覆盖率显示为 34.5%(这是单元测试百分比值)。 Sonar 确实看到了 test.exec、integrationTest.exec,并且在此操作期间也会自动生成 overall-xxx.exec 文件。
注意:我不知道在什么地方 - 在单独的 putty/linux 控制台上启动 tomcat - 或者在 Gradle 构建脚本中,为 Jacoco 提供任何值或设置 JAVA 代理。我已经得到了 integrationTest.exec 文件和 test.exec 文件,所以不确定在 IT 测试完成运行后是否需要停止 JVM。我认为我不需要这些,因为我有 .exec 文件的有效文件大小。
我的?- 为什么即使我正确设置/传递以下变量, Sonar 也没有在仪表板上获得 IT 覆盖:
sonar.jacoco.itReportPath=build/jacoco/integrationTest.exec
-bash-3.2$ cat 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
最佳答案
缩小原因:我认为这是由于用于集成测试的 .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 session /JVM 实例。 Tomcat 停止后,我看到 jacocoIT.exec 文件大小显着增加,这是有效的最终 jacocoIT.exec 文件(我需要它来执行 sonarRunner Gradle 任务或 sonar-runner 可执行文件以选择并成功将 IT 代码覆盖率数据推送到项目的 Sonar 仪表板).完成后,我获得了 UT + IT 及其组合代码覆盖率。
sonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec
sonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec
关于testing - SonarQube - integrationTest.exec - sonarRunner (Gradle) 或 "sonar-runner"命令 - 显示 0.0% 的覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19395182/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我有一系列 SQL 命令,我想在大约 40 个不同的表上运行。必须有一种方法可以在不编写 40 条不同命令的情况下执行此操作... 我在 SQL Server 中运行它。所有表都有不同的名称,我要操作
我习惯在 PHP 中使用命令“mysql_insert_id()”来返回插入到我的数据库中的最后一行的 id。 在 C# 中的 SQLite 中是否有等效的命令? 谢谢! -阿德娜 最佳答案 选择 l
试图找出一种方法来回填 ds 分区 Hive 表的分区。 我知道如何从 CLI 运行 Hive 命令,例如 $HIVE_HOME/bin/hive -e 'select a.col from tab1
我有 .bat 文件。看起来像下一个 ....many commands1 ftp -i -s:copy.txt ...many commands2 copy.txt 包含下一个命令 open ...
基本上我想输入 show 并检查是否有 show 命令或别名已定义并触发它,如果未定义则触发 git show 。 例如 rm 应该执行 rm 但 checkout 应该执行 git checkout
我公司的主数据库是 iSeries 机器,我已经非常习惯使用 DB2 命令和结构。我现在正在尝试做一个小项目,更新一个包含超过 300 万条记录的表。我想出一种比较和“清理”数据的更快方法是使用 My
我想在带有 Node 的终端中制作一个简单的按钮板,并“blessed”用于连接或运行不同的命令。 ----------------------------------------------- _
我们有一个 selenium IDE 脚本,正在转换为 python webdriver。以下命令未转换: [openWindow | http://mywebsite.com/index.php |
我正在学习这个关于从 GIT HUB 下载和安装 Web 文件的在线教程。我进入主题:启动我们的静态网站,系统提示我输入命令以下载和安装 Web 文件。但是,当我输入命令 yarn install 时
我在 shell 脚本中使用 elif 命令时遇到问题,就像在 fortran 中一样。 我有 100 家公司的员工名单。我想屏蔽那些员工少于 500 人的公司。我的脚本是 rm -f categor
我有一些 Linux 命令可以生成 token 。我在 Linux 机器上使用操作系统库形式的 Python 自动化了这些命令。它工作正常。 但是,当我在 Windows 中尝试相同的代码时,它没有返
本文分享自华为云社区《Git你有可能不知道交互式暂存》,作者:龙哥手记。 本节中的几个交互式 Git 命令可以帮助你将文件的特定部分组合成提交。 当你在修改了大量文件后,希望这些改动能拆分为若干提交而
我想知道如何使用 IN 比较语法来做到这一点。 当前的 SQL 查询是: select * from employee where (employeeName = 'AJAY' and month(e
我在这个位置安装了 Hadoop /usr/local/hadoop$ 现在我想列出 dfs 中的文件。我使用的命令是: hduser@ubuntu:/usr/local/hadoop$ bin/ha
是否有一个单一的 docker 命令可用于清除所有内容?如果正在运行,请停止所有容器、删除所有图像、删除所有卷...等。 最佳答案 我认为没有一个命令可以做到这一点。您首先需要停止所有容器使用 $ d
我基本上是在 clojure/nrepl 模式中寻找与 C-u C-x C-e 或 C-c C-p 等效的 Scheme。 我想要一个 C-x C-e 将输出打印到缓冲区,而不是仅仅在 repl 中。
我可以在 vim 中使用 pudb(一个 ncurses Python 调试器),因为,例如,:!python %在实际的终端窗口中运行。我更喜欢使用 gvim,但 gvim 运行 :!python
我正在尝试编写一个 FFMPEG 命令: 取为 输入 一个视频 input.mp4 和一个图像 pic.jpg 作为 输出 将 input.mp4 拆分为 20 秒的视频,按顺序重命名;对于每个分割视
我想转储视频每帧的比特率。我正在尝试使用 -vstats 获取此信息命令。当我运行此命令时 - ffmpeg -i input.mp4 -vstats 它显示至少应该定义一个文件。 如果有人能建议我任
我是一名优秀的程序员,十分优秀!