一、背景

最新单元测试覆盖率查看地址:https://codecov.io/gh/gogf/gf/tree/master 

截止2021-11-16,框架整体代码量146332行,其中单元测试代码行数73783行,单测覆盖率 70.14%

代码质量以及可维护性一直是goframe框架建设非常看重的两点原则,这两点原则也保障了框架组件代码的严谨和稳定。

在框架的维护路程中,单元测试在这其中扮演了非常重要的角色,可以说,框架组件之所以能长期稳定,框架发展到如此大的代码体量能够长期高效维护,离不开单元测试的保驾护航。在此基础之上我们的社区小伙伴才能够释放更多的精力去完善框架的细节,如文档、issue、讨论、布道等活动。

目前70.14%的单元测试覆盖率在我看来,仅仅保障了框架的核心功能以及大部分的主要功能,这还不够,我们应该可以做得更多。因此,我们组织了这次活动,倡导社区的力量共同来建设完善框架,非常欢迎对此感兴趣的小伙伴来一起参与这个事情。

二、我们的目标

  • 提高框架的单侧覆盖率,以进一步保障框架组件质量。
  • 所有组件的单侧覆盖率在90%以上及格,100%优秀。

三、单测编写资料

1、介绍资料

  • 文档介绍:准备中...
  • 视频介绍:准备中...

2、注意事项

  • 我们优先欢迎有一定工作年限和英文阅读能力的小伙伴,以便无偏差理解组件能力,尽可能保障单测质量。
  • 每个组件的源代码需要自己去阅读理解,全程没有手把手教学。好在每个组件、方法都有相对详细的英文注释。
  • 请务必在理解组件方法的前提下编写单测用例,每个单测应当有断言判断。
  • 新的单测只需覆盖没有覆盖到的代码行,不用重复编写已有覆盖率的单测。
  • 如果单测中需要写注释,请使用英文,以方便项目后期国际化推广。

四、单测任务划分

类别组件说明难度当前最终贡献者进度
数据结构gmap
577.54%95.98%黄骞 
gtree
689.14%
黄骞 
gtype
481.00%


gvar
1072.97%


glist
375.00%


gpool
483.70%


加密解密gaes
586.73%


gdes
589.71%


gmd5
538.10%
张育铭 
gsha1
560.00%


数据管理gdb
1062.97%


gredis
565.08%


编码解码gbinary
778.66%


gcompress
555.27%


gjson
789.46%
黄骞 
gbase64
153.70%
张育铭 
gcharset
487.76%


gini
281.16%


gxml
271.43%


gyaml
381.25%


功能调试gdebug
84.15%


错误处理gcode
260.00%


gerror
671.76%


耦合便捷g耦合模块70.00%


gins单例模块743.71%


I18N国际化gi18n
970.28%


内部组件internal/structs对象解析组件1057.77%


internal/utils内部工具组件450.21%
张育铭 
internal/empty空值判断组件360.47%
张育铭 
网络组件ghttp网络组件,功能强大。单测难度在于内部方法和对象较多。1062.13%



gtcpTCP通信封装组件。难度在于需要理解和有TCP编程经验便于编写单测。935.66%77.25%黄骞 
gclient
846.87%76.19%黄骞 
gudp同上937.37%61.48%
gtrace难度在于需要模拟和理解OpenTelemetry协议。817.36%


系统组件












gcache
679.58%


gcfg
660.00%


gcmd
769.08%

gcron
541.30%


gfile
471.72%

gfpool文件指针池。请参考现有用例。465.26%


gfsnotify底层核心的文件监控组件。1047.99%


glog核心的日志组件。单测难度在于不太方便断言,可参考现有单测示例。1058.22%


gres资源管理。请参考现有用例。862.21%


gsession
770.53%
黄骞 
gtime
582.86%


gview请参考现有用例。672.48%


gbuild构建信息管理。单测需要模拟构建信息,参考现有单测用例。363.33%


gctx上下文管理。281.25%


genv
274.14%


协议管理goaiOpenAPI协议管理组件。单测难度在于需要了解OpenAPI协议才能理解内部的对象设计,才便于编写单测用例。971.06%


单元测试gtest自己测试自己,单测用例还是有一定难度。911.07%


文本处理gstr字符串处理。内部有个别方法不太好理解,先求助下搜索引擎吧。375.48%


实用工具





gconv类型转换组件。难度在于内部有几个复杂类型转换方法构造用例比较麻烦:Scan*/Map*/Struct*方法,1059.35%


grand随机数组件。组件由于随机数担忧随机性,所以单测用例不太好设计。675.17%


gutil工具方法。内部有几个方法也较复杂,可以参考现有单例。781.44%


gvalid数据校验。689.16%


gmeta元数据组件。只需要测试写入和读取元数据即可。480.95%


gmode环境管理。378.13%




















Content Menu

  • No labels