1.单元测试覆盖率:
maven命令的方式:
1.生成jacoco.exec:
mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean test -Dmaven.test.failure.ignore=true
2.生成index.html
cd 模块 java -jar jacoco-0.8.4/lib/jacococli.jar report target/jacoco.exec --classfiles target/classes --html target/site/jacoco/
添加maven依赖的方式:
在项目root目录 pom.xml中添加:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
运行 mvn test 即可在target/site/jacoco文件夹下生成报告。
如果想要跳过失败的测试用例,请使用 mvn test -Dmaven.test.failure.ignore=true.
2.增量覆盖率:
原理:
①先得到单元测试覆盖率;
②diff代码,指定工程根目录和需要处理的子模块及对比的版本.计算增量代码覆盖率,并标记修改覆盖率报告.
python main.py -d . -m xmpush-common-spring-boot-starter -o 80e8d5220f906f1242736dc77ac8ef10947ff0fc
3.黑盒测试覆盖率:
原理:on the fly模式.通过javaagent代理实现.
tomcat项目:
1.配置Tomcat
1.1 把解压获取到的jacoco下的lib\jacocoagent.jar 文件放到tomcat安装路径\lib 下
1.2 配置Tomcat \bin\catalina.bat文件,添加如下
# -javaagent: 的后面跟jacoco的安装路径
# includes= 选项,选择你要覆盖率的服务,例如com.baidu.*
# port= 选项,选择你要打开的端口
# address= 选项,tomcat服务所在机器的ip地址(如果想在跟tomcat服务同一台机器上执行ant任务的话,需要改为127.0.0.1)
set JAVA_OPTS="-javaagent:%CATALINA_BASE%\lib\jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=127.0.0.1"
2.部署项目
打包你的java工程项目到Tomcat 下的 \webapps 目录下,并启动Tomcat.
3.启动项目
如果是springboot项目:
配置Vm
options:-javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=8089,address=127.0.0.1
访问项目提供的API进行测试.
Ant 构建获取代码覆盖率:
在服务器上,新建 build.xml 如下
<?xml version="1.0" encoding="UTF-8"?>
<project name="nelus" xmlns:jacoco="antlib:org.jacoco.ant">
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="jacocoant.jar"/>
</taskdef>
<target name="dump">
<!-- address和port和catalina.bat设置保持一致,destfile设置jacoco.exec保存地址 -->
<jacoco:dump address="127.0.0.1" reset="true" port="8089" destfile="CodeCoverage\jacoco\jacoco.exec"/>
</target>
<target name="report">
<jacoco:report>
<executiondata>
<file file="CodeCoverage\jacoco\jacoco.exec"/>
</executiondata>
<structure name="Example Project">
<!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
<group name="SpringMVC">
<classfiles>
<!--.class文件路径,可以放在客户端-->
<fileset dir="/home/xumeng/workspace/nelus/target/classes"/>
</classfiles>
<sourcefiles encoding="utf-8">
<!--源代码路径,可以放在客户端-->
<fileset dir="/home/xumeng/workspace/nelus/src/main/java" />
</sourcefiles>
</group>
</structure>
<!-- report文件保存地址 -->
<html destdir="CodeCoverage\jacoco\report"/>
</jacoco:report>
</target>
</project>
ant dump生成jacoco.exec文件
ant report 生成report文件(如果通过Jenkins插件这步骤可免)
生成报告地址是build.xml 中配置的。
查看报告>http://127.0.0.1:8089