【问题标题】:Jacoco tcpserver reset dumpJacoco tcpserver 重置转储
【发布时间】:2014-07-07 09:14:35
【问题描述】:

我正在尝试使用 jacoco 代理远程获取覆盖数据,并使用 reset=true 重置服务器上的执行信息;

服务器上的 jacoco java 代理:

JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:applications/jacoco/lib/jacocoagent.jar=output=tcpserver,address=*,port=36320"

本地机器上的 Ant 任务:

<project name="Ant Report Build with JaCoCo" default="get_data" xmlns:jacoco="antlib:org.jacoco.ant">

    <property name="result.exec.file" value="test_data.exec"/>
    <property name="server" value="my-server.com" />
    <property name="port" value ="36320" />

    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
      <classpath path="jacoco\lib\jacocoant.jar"/>
    </taskdef>   


    <target name="get_data">
      <jacoco:dump address="${server}" port="${port}" reset="true" append="false" destfile="${result.exec.file}"/>
    </target>

</project>

我的问题是在我得到转储后重置执行信息。如果我在服务器上执行一些操作,然后两次调用我的 ant 目标“get_data”,在执行之间删除 test_data.exec 文件,我会得到相同的覆盖数据。所以看来reset=true是行不通的。

如何让 Jacoco 在我转储后重置 Coverega 数据信息? 将不胜感激。

【问题讨论】:

    标签: java ant jacoco


    【解决方案1】:

    我遇到了同样的问题。 但是请仔细看一下,您会发现您拥有的 2 个覆盖数据转储并不相同。它们的大小相同,但当您“区分”它们时就不一样了。

    当您调用“reset”时,很容易假设 jacocoagent 将清除所有执行数据,并且您的下一个转储的大小预计为 0,但事实并非如此。 相反,jacocoagent 将所有执行数据全部重置为“未执行”,接下来您转储的将是一个标记所有未执行的文件,而不是一个空文件。 jacoco.exec 文件的大小与已加载到 JVM 中的类的数量相关。

    【讨论】:

      【解决方案2】:

      好像丢了dump="true",悄悄用ant把文件删了。 应该是

      <jacoco:dump address="${server}" port="${port}" dump="true" reset="true" destfile="${result.exec.file}" append="false"/>
      <delete file="${result.exec.file}"/>
      

      更多信息here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-18
        • 2018-01-16
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        相关资源
        最近更新 更多