JACOCO的坑【2】

来源:互联网 发布:贪心算法题目 编辑:程序博客网 时间:2024/05/18 14:15

jacoco的坑续集

本来放假打算好好玩一下。放松一下自己的。但是女朋友生病了,要照顾她。趁她吃了药睡着了。顺手把之前的坑给填上好了。jacoco用来收集spring boot的项目的覆盖率有几种做法。之前就说过,我采取的是远程的javaagent的方式。产生jacoco.exec文件。然后用maven的插件来运行得到覆盖率报告。其实还有别的做法:
  • 直接使用eclispe插件
  • 远程链接jacoco的agent,实时得到覆盖率的情况

    今天就来试一下这两种方式:

    ecipse插件

首先,我们得先安装一个eclipse的插件
http://update.eclemma.org/
这里写图片描述

这里会根据你的eclipse的版本,自动安装对应的插件版本。这里不赘述了。

第二步,得现有一个能用的spring boot项目。我这里准备了一个,有兴趣的可以直接到github下载。
jacocoDemo

核心程序很简单。模拟一个订单的金额计算,有几个分支:

package com.retinder.web.jacocoDemo;import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@Controller@EnableAutoConfigurationpublic class App {    @RequestMapping("/plusPrice")    @ResponseBody    int plusPrice(int price,int num) {        if (price < 0 | num < 0) {            return -1;        }         if(num>1000)        {            return -1;        }        return price * num;    }    public static void main(String[] args) throws Exception {        SpringApplication.run(App.class, args);    }}

然后,我们用插件调起这个web工程:
这里写图片描述

然后我们用postman或者其他web测试工具,调起这个网页的接口

这里写图片描述

这里写图片描述

这里写图片描述

选择导出一下执行的数据:

这里写图片描述

就可以看到代码覆盖的情况。可以看到。简单的几种组合测试,已经覆盖了代码的所有场景。测试相当充分:)

实时获取代码覆盖率

java  -javaagent:jacocoagent.jar=includes=com.retinder.*,classdumpdir=classes,output=tcpserver,port=6300,address=127.0.0.1 -jar jacocoDemo-0.0.1-SNAPSHOT.jar

这里我们采用这种方式启动。然后我们用jacoco提供的客户端代码,简单的获取覆盖率的情况。

http://www.eclemma.org/jacoco/trunk/coverage/org.jacoco.examples/index.html

简单的写一下client模块跟reportgenerator,就可以持续的生成覆盖率了。

然而,这里有个新坑。并无法生成预期的报告。报告里边总是说我的覆盖率为0.

好吧。这个是个新坑。。以后有空再填回来。

原创粉丝点击