Jacoco:无法读取执行数据文件,ant 任务

DMe*_*eng 7 java ant code-coverage jacoco

信息:java 版本:1.8.0_66 蚂蚁版本:1.9.6

我想做的事:

为在 AWS windows 2k12 服务器上运行的服务器代码提供代码覆盖率报告。

我做了什么:

  • 完全停止服务器。
  • 将 jacocoagent.jar 放入服务器的 bin 文件夹中。注意:这是在 Program Files 文件夹中
  • 将 -javaagent 设置附加到服务器启动期间使用的 JAVA_OPTS。
  • 启动服务器。
  • 从我的本地笔记本电脑运行我的示例测试。
  • 完全停止服务器。这产生了一个 184kb 的 jacoco.exec。
  • 将我的 build.xml 复制到 jacoco.exec 所在的同一目录。C:/path/to/exec/jacoco.exec
  • 将 jacocoant.jar 复制到 C:/path/to/jacocoant.jar
  • cd 进入 C:/path/to/exec/ 并运行命令“ant”

结果:

出现错误无法读取执行数据文件 C:/path/to/exec/jacoco.exec

构建.xml:

<project name="Example" default="rebuild" xmlns:jacoco="antlib:org.jacoco.ant">

<description>
  Example Ant build file that demonstrates how a JaCoCo coverage report
  can be itegrated into an existing build in three simple steps.
</description>

<property name="result.dir" location="." />
<property name="result.classes.dir" location="${result.dir}/path/to/classes" />
<property name="result.report.dir" location="${result.dir}/report" />
<property name="result.exec.file" location="${result.dir}/jacoco.exec" />

<!-- Step 1: Import JaCoCo Ant tasks -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
    <classpath path="../jacocoant.jar" />
</taskdef>

<target name="clean">
    <delete dir="${result.report.dir}" />
</target>

<target name="report">
    <!-- Step 3: Create coverage report -->
    <jacoco:report>

        <!-- This task needs the collected execution data and ... -->
        <executiondata>
            <file file="${result.exec.file}" />
        </executiondata>

        <!-- the class files and optional source files ... -->
        <structure name="JaCoCo Code Coverage Report">
            <classfiles>
                <fileset dir="${result.classes.dir}" >
                    </fileset>
            </classfiles>
            <sourcefiles encoding="UTF-8">
                <fileset dir="${src.dir}" />
            </sourcefiles>
        </structure>

        <!-- to produce reports in different formats. -->
        <html destdir="${result.report.dir}" />
        <csv destfile="${result.report.dir}/report.csv" />
        <xml destfile="${result.report.dir}/report.xml" />
    </jacoco:report>
</target>
Run Code Online (Sandbox Code Playgroud)

我不确定问题是与 exec 文件有关(它可能已损坏)还是与我的整个设置有关。任何帮助识别和帮助解决问题的帮助表示赞赏!!!

谢谢!

小智 6

我在使用 gradle 和 jaCoCo 时得到了这个。

我删除了 build/ 目录并重新运行./gradlew jacocoTestReport,这次过去了。


sof*_*fia 2

我最近也遇到了同样的问题,我花了很长时间才解决这个问题。我希望我解决这个问题的方法能够帮助您或其他人。

  1. 用于ant -verbose report查看详细信息。我使用“ant -verbose report”并收到此消息:“java.io.IOException:不兼容版本1007”。
  2. 当我使用 Maven 时,我将以下行添加到我的 pom.xml 中。注意:版本与您的javaagent版本相同。

<dependency> <groupId>org.jacoco</groupId> <artifactId>org.jacoco.ant</artifactId> <version>0.7.4.201502262128</version> </dependency>

最终,报告成功生成。