我正在尝试使用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数据信息? 非常感谢任何帮助。
答案 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