前置条件:
配置本地java环境
配置本地ant环境
配置本地maven环境
配置本地tomcat环境
第一步:新建简单被测的java web,maven项目
打开eclipse工具,File -> New -> Project
搜索maven,选择Maven Project,点击Next
点击Browse,选择本地工作空间,也就是存放新建的项目的目录所在位置。
选择maven-archetype-webapp:
填写坐标,然后点击Finish:
完成后,项目如下图所示:
存在问题1:缺失部分目录
补齐目录结构:
在工程名称(test-tomcat)处右键,选择Build Path->Configure Build Path:
点击Source,分别选择错误目录,点击remove:
然后点击新增目录:java、test/java
完成后,如下图,点击应用 Apply and Close:
问题2:jsp依赖缺失项目报错
解决问题:
添加依赖,依赖内容如下:
pom.xml文件内容如下:
4.0.0
com.jacoco
test-tomcat
war
1.0.0
UTF-8
1.7
1.7
com.alibaba
fastjson
1.2.62
junit
junit
4.11
test
javax.servlet
javax.servlet-api
3.1.0
javax.servlet.jsp
javax.servlet.jsp-api
2.3.1
javax.servlet
jstl
1.2
test-tomcat
至此项目新建完成,不报错,成品截图:
第二步:增加测试接口内容,提供一个接口
(虽然只提供一个接口,但是此处目的是为了演示tomcat版的代码覆盖率,所以为了方便,提供一个接口)
新增一个包:(也就是建个多级目录)
新增一个servlet类:
类中代码如下:
importcom.alibaba.fastjson.JSON;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.Map;/*** 测试jacoco的servlet*/@WebServlet("/jacoco-test")public class JacocoServlet extendsHttpServlet {privateString message;
@Overridepublic voidinit() {
message= "Hello world, this message is from servlet!";
}
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsIOException {//设置相应内容类型
resp.setContentType("text/json;charset=utf-8");//实例化输出流对象
PrintWriter out =resp.getWriter();
Map resultMap = new HashMap<>();
String data= req.getParameter("data");if ("daling".equals(data)) {
resultMap.put("data", "daling");
}else if ("dalingjia".equals(data)){
resultMap.put("data", "dalingjia");
}else{
resultMap.put("data", "helloworld");
}
out.println(JSON.toJSONString(resultMap));
}
@Overridepublic voiddestroy() {super.destroy();
}
}
代码测试:
前置条件:
eclipse配置关联本地tomcat
eclipse配置关联本地maven
1、项目配置通过tomcat容器运行
2、通过postman请求上述接口地址,如下图:访问成功
第三步:配置ant,本地创建一个build.xml文件,内容如下:
需要修改的内容:
1、jacocoant.jar的位置(jacocoantPath)
2、exec文件生成的具体路径(jacocoexecPath)
3、服务的ip和对外提供的tcpserver 的端口
4、源码和字节码路径
备注:支持多源码目录,也就是可以支持一台机器多个服务的覆盖率报告的dump和生成报告
第四步:正儿八经的开始覆盖率报告的生成步骤
1、配置
windows修改配置:【此处使用方式2】
方式1:
set"JAVA_OPTS=%JAVA_OPTS% -javaagent:D:/Downloads/jacoco-0.7.9/lib/jacocoagent.jar=includes=*,output=file,append=true,destfile=D:/Downloads/jacoco-0.7.9/target/jacoco.exec"
方式2:
set"JAVA_OPTS=%JAVA_OPTS% -javaagent:D:/Downloads/jacoco-0.7.9/lib/jacocoagent.jar=includes=*,output=tcpserver,port=9001,address=127.0.0.1"
Linux修改配置:(需要将项目打包生成的war包丢到tomcat的webapps目录下,然后到tomcat对应的bin目录下执行./startup.sh启动tomcat)
JAVA_OPTS="-javaagent:/Users/yan/workspace/workconfig/jacoco-0.8.5/lib/jacocoagent.jar=includes=*,output=tcpserver,port=9001,address=127.0.0.1"
IDEA启动服务,配置:
在VM options中添加:-javaagent:/Users/yan/workspace/workconfig/jacoco-0.8.5/lib/jacocoagent.jar=includes=*,output=tcpserver,port=9001,address=127.0.0.1
2、检查是否配置成功
执行命令:ps -ef | grep tomcat | grep --color jacoco
出现入下图所示,则表示配置成功:
3、启动tomcat运行服务,进行接口请求
4、在build.xml文件目录下,执行ant dump,会在指定的目录下导出exec文件
5、在build.xml文件目录下,执行ant report,会在指定的目录下生成覆盖率报告
如下图所示:
右键report目录中的index.html文件浏览器打开:
至此完成java-web-maven项目,使用ant生成覆盖率报告的步骤讲解。
总结:
1、配置tomcat,在catalina.sh文件中配置javaagent添加如下内容:JAVA_OPTS="-javaagent:/Users/yanfuchang/workspace/workconfig/jacoco-0.8.5/lib/jacocoagent.jar=includes=*,output=tcpserver,port=9001,address=127.0.0.1"
2、配置ant所需的build.xml文件,文件中需要指定相关目录。
3、执行ant dump 、ant report 生成覆盖率报告。