和EMMA工具相似,Jacoco生成覆盖率报表也分为两步:1,收集覆盖率信息。2,通过覆盖率信息生成报表。我们可以对第一步生成覆盖率文件进行数据的合并和处理。
1,运行Java类时在VM arguments:
-javaagent:E:\project_lib\Jacoco\jacocoagent.jar=includes=com.jerval.*,output=file,destfile=E:\jacoco.exec
2,通过Ant脚本生成报表:
<?xml version="1.0" encoding="UTF-8"?> <project name="Example Ant Build with JaCoCo" default="report" 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="myapp.name" value="Test"/> <property name="src.dir" location="E:/workspaceForGit/${myapp.name}/src" /> <property name="result.report.dir" location="E:/workspaceForGit/${myapp.name}/jacoco_report" /> <property name="result.classes.dir" location="E:/workspaceForGit/${myapp.name}/bin" /> <property name="result.exec.file" location="E:/jacoco.exec" /> <!-- Step 1: Import JaCoCo Ant tasks --> <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"> <classpath path="E:/project_lib/Jacoco/org.jacoco.core-0.7.6.201602180812.jar" /> <classpath path="E:/project_lib/Jacoco/org.jacoco.report-0.7.6.201602180812.jar" /> <classpath path="E:/project_lib/Jacoco/org.jacoco.ant-0.7.6.201602180812.jar" /> <classpath path="E:/project_lib/Jacoco/asm-debug-all-5.0.1.jar" /> </taskdef> <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 Ant Example"> <classfiles> <fileset dir="${result.classes.dir}" /> </classfiles> <sourcefiles encoding="UTF-8"> <fileset dir="${src.dir}" /> </sourcefiles> </structure> <!-- to produce reports in different formats. --> <html destdir="${result.report.dir}" /> </jacoco:report> </target> </project>