一、背景
前面介绍过单测框架Junit5以及辅助单测的Mock框架MockIto。但是这些仅仅是提供给我们如何去写好一个单测,单测的有效性怎么样,是否满足所有的case场景,等等这些问题,是需要有度量指标去统计衡量。所以我们需要去定义一串代码的case是否都已经覆盖到。于是我们需要统计单测覆盖率来衡量单测case的覆盖范围。
二、单测覆盖率指标
常见的覆盖率指标有
- 行覆盖率
- 类覆盖率
- 分支覆盖率
- 方法覆盖率
- 圈复杂度
而行覆盖率是我们主要的衡量指标,有些平台要求较低可能只关注方法覆盖率。
业内的标准:
行覆盖率70%+,核心模块的行覆盖率和分支覆盖率100%
三、单测覆盖率框架
- Jacoco
- Emma
- CoberTura
我们本期重点关注下Jacoco,很多平台也是基于Jacoco做的单测报告集成。并且IDEA自带有Jacoco和Emma框架
IDEA利用Jacoco生成单测覆盖率报告
写好测试类IUserServiceTest.java
如下图修改IDEA配置
以单测覆盖率方式启动运行测试类