如在 Intellij IDEA 中打开 JaCoCo 报告中所述,当我使用 Jacoco(而不是本机 IntelliJ 跟踪)收集代码覆盖率统计信息时,覆盖率窗口中始终显示 0.0%(即“无”覆盖率)。
这是在我完成整个“分析 -> 显示覆盖率数据...”并选择生成的“jacoco.exec”文件之后。
相同的“jacoco.exec”文件可以与其他工具(例如 Jacoco 本机报告生成任务)以及 Sonar 配合使用,从而生成预期的覆盖率报告内容。
原生 IntelliJ 仪器也可以正常工作。
如果我必须执行一些重要步骤才能让 IntelliJ 接受我的 Jacoco 承保范围,有人可以建议我吗?
当您将类添加到测试类的PowerMockito注释
@PrepareForTest
时,相应的类将不会显示代码覆盖率。
在导入 jacoco.exec 之前通过 IntelliJ 构建源代码可能会解决显示 0% 覆盖率的问题。
对我来说,这是目标类别的问题。在 IntelliJ 的编辑配置弹出窗口中,查看
Modify Options
和 specify classes and packages
选项。似乎应该指定这些类,或者在覆盖范围内不测量任何内容。
“intellij idea”似乎无法显示创建的 jacoco 报告的正确覆盖率值。当它显示覆盖范围为 0.0 而不是给出不支持的格式错误时,这确实具有误导性和不公平。
但是,作为替代方案,我们可以使用 maven-sonar-plugin 的目标 sonar:sonar 将 jacoco 报告(作为 maven 构建的一部分创建)推送到 sonar(qube) 服务器。
mvn clean install sonar:sonar -Dsonar.host.url=http://<sonar-host>:9000 -Dsonar.projectKey=<sonar project key> -Dsonar.branch=<sonar project branch> -Dsonar.login=<sonar user> -Dsonar.password=<sonar pwd>
sonar.projectKey 和 sonar.branch 属性值可以从 sonarqube 中创建的相应项目中检索。