前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >super-jacoco单元测试覆盖率度量实践-1

super-jacoco单元测试覆盖率度量实践-1

作者头像
Antony
发布2022-02-08 10:57:33
1.1K0
发布2022-02-08 10:57:33
举报

为什么会关注Super-Jacoco ?

代码覆盖率,尤其是增量代码覆盖率,是质量门禁的重要指标之一。由于一些不可名状的原因,团队原先提供质量门禁服务的工具暂时停服了,因此需要另外寻找一个工具来代替提供此项服务。于是,笔者就Super-Jacoco做了一个简单的POC。

(增量)单元测试覆盖率统计实现过程分析

通常在网络上可见的介绍Super-Jacoco的文章主要是围绕系统测试的覆盖率统计来展开的,估计这也是这个工具的主要用户群体。而这个工具的手册中关于如何实现单元测试的介绍也非常简单,就是调用Super-Jacoco的两个接口

代码语言:javascript
复制
1、启动覆盖率收集
 URL:/cov/triggerUnitCover
 调用方法:POST
 参数(body方式传入):{"uuid":"uuid","type":1,"gitUrl":"git@git","subModule":"","baseVersion":"master","nowVersion":"feature","envType":"-Ptest"}
 返回:{"code":200,"data":true,"msg":"msg"}
 备注:
2、获取覆盖率结果
 URL:/cov/getUnitCoverResult
 调用方法:GET
 参数:uuid(String)
 返回:{"code":200,"data":{"coverStatus":1,"errMsg":"msg","lineCoverage":100.0,"branchCoverage":100.0,"logFile":"file content","reportUrl":"http://"},"msg":"msg"}
 备注:
第一个接口是启动收集,第二个接口是查询获得覆盖率结果。

看上去非常简单易用是不是?具体又是如何实现的呢?

笔者下载了Super-Jacoco的源码简单地进行了一下阅读分析,并尝试进行一下解读。

处理过程:

Super-Jacoco使用了很多的状态码来标志单测覆盖率分析任务的进展。除了阅读源码之外,可以通过状态码来了解整个任务的执行过程,见下图。

在客户端通过/cov/triggerUnitCover接口提交了单测覆盖率统计请求后,Super-Jacoco将新生成一个分析任务的记录存入数据库,并将其状态置为0-初始数据。

此后,一个定时触发的任务(10秒)将负责执行此单元测试任务,从状态1到9, 并在整体完成后将任务的状态置为200。

这样,客户端就可以通过/cov/getUnitCoverResult来根据uuid获取该次申请的执行结果了,也就是类似如下的内容

代码语言:javascript
复制
package com.xiaoju.basetech.entity;

import lombok.Data;

/**
 * @description:
 * @author: gaoweiwei_v
 * @time: 2019/9/23 10:16 AM
 */
@Data
public class CoverResult {

    /**
     * -1、失败;1、成功;0、进行中
     */
    private int coverStatus;
    public String reportUrl;
    private double lineCoverage;
    private double branchCoverage;
    private String errMsg;
    private String logFile;

}
代码语言:javascript
复制
包括了代码行覆盖率和分支覆盖率这两个关键数据,以及覆盖率报告的下载链接和本次任务执行的日志文件的下载链接。

在从1到9的步骤中,Super-Jacoco使用到了哪些技术呢?从步骤上分析,可以看到需要完成以下的工作,

1、代码库下载、代码增量分析:这部分是关于Git操作的

2、添加模块:这是对pom.xml文件的操作,类似的操作文件还包括了对jacoco生成的覆盖率报告的解析。

3、单元测试执行:这是关于命令行执行的,需要执行类似”mvn clean test”的命令

将在下一篇中结合源码进行分析

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么会关注Super-Jacoco ?
  • (增量)单元测试覆盖率统计实现过程分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档