Jacoco tcpserver重置转储

时间:2014-05-19 12:03:54

标签: java ant jacoco

我正在尝试使用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文件,我会获得相同的coverege数据。所以似乎reset = true不起作用。

我转储后如何让Jacoco重置coverega数据信息? 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。 但请仔细看看,您会发现您拥有的2个覆盖数据转储不相同。它们的大小相同,但不是在你和它们相同的时候。它们。

当你打电话给&#34;重置&#34;时,很容易假设jacocoagent会消灭所有执行数据,你的下一次转储大小应为0,但是&# 39;事实并非如此。 相反,jacocoagent将所有执行数据重置为&#34;未执行&#34;,然后您转储的内容将是标记未执行的所有内容的文件,而不是空文件。 jacoco.exec文件大小与已加载到JVM中的类数相关联。

答案 1 :(得分:0)

似乎您丢失了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