88

我从 jacoco 生成了一份代码覆盖率报告,即jacoco.exec。但是不知道怎么用。。。

我生成它的方式是通过命令行:

java -javaagent:/path/to/jacocoagent.jar=include=some.package.*,output=file org.junit.runner.JUnitCore some.package.ClassTest

然后我得到了 jacoco.exec 报告。我所需要的只是百分比的数量,而且我只使用命令行。有没有办法将此报告转换为可读的 txt 文件?

谢谢大家

4

11 回答 11

112

在 IntelliJ Idea 中,从菜单中选择Analyze> Show Coverage data。在新窗口中按 + 按钮并选择您的 .exec 文件。测试覆盖率结果将出现在编辑器 Coverage 选项卡中。

更新:

在最新版本的 Intellij Idea 中,菜单已移至Run>Show Code Coverage Data

于 2017-05-03T12:53:05.463 回答
27

对于 Eclipse 用户,您可以在 Eclipse 中简单地使用 EclEmma jacoco 插件。Window > Show View > Coverage(当然你必须先安装插件)。在 Coverage 窗口中,右键单击 > Import >..... 选择 exec 文件(或其他不错的方法),选择您的源代码,然后查看。您还可以将结果导出到 html 文件。

于 2014-02-20T10:07:57.920 回答
16

我认为报告已经生成。在文件夹中查找target/site/jacoco

这提供了target/site/jacoco/jacoco.csv一些原始文本,您可以相对容易地解释它们——可能导入到电子表格中。

大多数人会想要target/site/jacoco/index.html,它是网页形式的报告。


如果您没有看到这些报告,请尝试明确请求它们并查看是否提供任何线索...

mvn clean test jacoco:report
于 2018-06-28T19:42:51.523 回答
14

根据这个线程,您不能直接使用生成的 jacoco.exec 来生成报告。您可以下载 Jacoco 的示例build.xml并使用它来生成报告。您需要对 build.xml 进行这些更改:将路径设置为

  • 你下载的 jacocoant.jar
  • 你的 jacoco.exec
  • 你的项目源代码
  • 您编译的项目类文件

我还将默认目标更改为“报告”。然后通过键入“ant”运行它,您的报告将生成。

于 2013-08-22T15:04:29.923 回答
11

Jacoco 提供了一个命令行库来处理jacoco.exec数据:Jacoco cli doc

安装 Jacoco 后,您可以使用以下命令生成报告:

java -jar lib/jacococli.jar report jacoco.exec \
--html ./report \
--sourcefiles [path/to/your/source/files] \
--classfiles [path/to/your/class/files]
于 2020-04-15T10:09:01.300 回答
5

这个答案类似于@Evans Y。可以借助Jacoco 文档中的以下命令生成 HTML 文件(在报告目录中的此处)和 XML 文件(命名为 cov)。

java -jar lib/jacococli.jar report jacoco.exec \
--classfiles C:\Users\severalOtherDirectories\YourProject\target\classes \
--html ./report --xml cov.xml

HTML 报告:此报告将能够显示在类或方法级别覆盖/未覆盖的总行数,但无法显示相同覆盖/未覆盖的实际行数。

XML 文件:在项目中插入这个生成的文件并简单地使用 VS 代码覆盖扩展(我更喜欢覆盖范围)后,可以在编辑器本身中逐行可视化状态。

于 2020-04-24T00:06:28.503 回答
1

我们可以使用 maven-sonar-plugin 的目标 sonar:sonar 将 jacoco exec 报告(作为 maven 构建的一部分创建)推送到 sonar(qube) 服务器

mvn clean install sonar:sonar -Dsonar.host.url= http://:9000 -Dsonar.projectKey= -Dsonar.branch= -Dsonar.login= -Dsonar.password=

sonar.projectKey 和 sonar.branch 属性值可以从 sonarqube 中创建的相应项目中检索。

于 2017-09-19T10:13:24.463 回答
0

如果您使用 maven,请使用 report-aggregate 目标。

请参阅下面的链接:

报告聚合 Maven 目标

这是我的 maven pom.xml 文件中的一个片段

            <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report-aggregate</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions

csv 报告文件生成于:site/jacoco/jacoco.csv

于 2018-09-14T21:39:14.503 回答
0

无论出于何种原因,我无法让 EclEmma 和 Jacoco 像人们建议的那样与 Eclipse 一起工作,所以我偶然发现了以下解决方法。

  1. 确保您已将 jacoco 插件作为依赖项添加到 maven pom
  2. 打开 Run Configurations... ,将新的 Maven Build 添加到您正在处理的项目中
  3. 使用以下作为您的目标:清洁测试 jacoco:report
  4. 应用并运行,刷新你的 /target 目录,现在你应该看到 /target/site/jacoco
  5. 在 jacoco 目录中找到 index.html,右键单击并选择 Open With... 并选择 Web Browser
  6. 您的 jacoco.exec 现在可以通过 Web 浏览器在 Eclipse 中完全导航
  7. 更改代码覆盖率,运行您设置的 Maven 构建作业,刷新浏览器,您应该会看到差异。
于 2021-03-09T16:15:30.763 回答
0

要在 IntelliJ Idea 中查看此内容,请从菜单栏中选择Run > Show Code Coverage Data。在新窗口(选择要显示的 Coverage Suite)中,按 + 按钮并选择您的 .exec 文件。测试覆盖率结果将出现在编辑器 Coverage 选项卡中。

要为上述 .exec 文件生成 Coverage Report 文件,请选择Run > Generate Coverage Report。然后选择您的输出目录并单击保存。您的报告将生成到所选文件夹。打开文件夹中的 index.html 文件,在浏览器上查看结果。我正在使用 IntelliJ IDEA 2019.3.4(社区版)

于 2020-04-29T12:54:16.073 回答
-5

终端: mvn install jacoco:report for maven project with jacoco plugins

于 2017-09-04T06:08:00.133 回答