dump coverage Data when shutdown the JVM
1. Download jacoco:http://www.eclemma.org/jacoco/
2. For Tomcat, add in the java_opts configuration of catalina.sh:
-javaagent:/home/work/local/jacoco/lib/jacocoagent.jar=includes=com.xxx.*
Where includes: represents coverage data collection for the specified class, other parameters: Append=true/false: Whether the coverage data collected is appended or replaced, and does not set default to True destfile= Jacoco.exec:dump out of coverage data file Output=file/tcpserver/tcpclient: The form of coverage data output, respectively, for File,tcpserver and Tcpclient,file is a simpler way, TCP can support the development of tools for obtaining coverage data on its own. Do not set default is file.
3. Note that the use of Output=file, the JVM is stopped when the coverage data dump came to the file, after shutdown Tomcat can not kill-9 Java, only kill the Tomcat process, otherwise the data collection is invalid
4. Generating coverage data requires ant execution, build.xml instance: After specifying the exec file for step 3rd dump, executing Antjacoco, the HTML format coverage report is output in the specified path
<?xml version= "1.0"?>
<project name= "testexec" xmlns:jacoco= "antlib:org.jacoco.ant" default= "Jacoco" >
<propertyname= "Srcpath" value= ""/>
<propertyname= "ClassPath" value= ""/>
<propertyname= "Jacocoantpath" value= ""/>
<propertyname= "Jacocoexecpath" value= ""/>
<propertyname= "Workspacepath" value= ""/>
<propertyname= "Reportfolderpath" value= ""/>
<propertyname= "Server_ip" value= ""/>
<propertyname= "Server_port" value= ""/>
<taskdefuri= "Antlib:org.jacoco.ant" resource= "Org/jacoco/ant/antlib.xml" >
<classpathpath= "${jacocoantpath}"/>
</taskdef>
<target name= "Merge" >
<jacoco:mergedestfile= "Merged.exec" >
<filesetdir= "${workspacepath}" includes= "**/*.exec"/>
</jacoco:merge>
</target>
<targetname= "Dump" >
<jacoco:dumpaddress= ' ${server_ip} ' reset= ' false ' destfile= ' ${jacocoexecpath} ' port= ' ${server_port} ' append= ' True "/>
</target>
<targetname= "Jacoco" >
<deletedir= "${reportfolderpath}"/>
<mkdirdir= "${reportfolderpath}"/>
<jacoco:report>
<executiondata>
<filefile= "${jacocoexecpath}"/>
</executiondata>
<structurename= "Jacoco" >
<groupname= "AD" >
<classfiles>
<filesetdir= "${classpath}"/>
</classfiles>
<sourcefilesencoding= "GBK" >
<filesetdir= "${srcpath}"/>
</sourcefiles>
</group>
</structure>
</jacoco:report>
</target>
</project>
Keep JVM dump out coverage Data
When configuring java_opts parameters, modify the following:
-javaagent:/home/work/local/jacoco/jacocoagent.jar=includes=com.xx.*,output=tcpserver,port=10001,address= 100.100.100.100
In this way, after you start Tomcat, Jacoco will provide client access on one port and dump the coverage data file at this time, and the way to dump is still ant execution, which is in Build.xml:
<target name= "Dump" >
<jacoco:dumpaddress= ' ${server_ip} ' reset= ' false ' destfile= ' ${jacocoexecpath} ' port= ' ${server_port} ' append= ' True "/>
</target>
Need to configure server IP and port, execute ant dump, output or exec file, and then execute ant Jacoco will generate HTML report