查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo

 

关于测试左移之JaCoCo,代码覆盖率统计

什么是jacoco?
jacoco是一个开源的代码覆盖率工具,针对java语言,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。代码覆盖率一般又分为单元测试覆盖率和功能测试覆盖率,对于开发人员,一般比较关注单元测试覆盖率,而对于测试人员,一般更关注的是功能测试覆盖率。

 

为什么要做代码覆盖率统计?
代码覆盖率是衡量测试质量的一个重要指标,在进行了一轮或者多轮各种类型的测试之后,如何能够比较直观地看出,我们当前迭代的测试工作都覆盖了哪些功能点,又有哪些功能点被遗漏掉了。通过对代码的覆盖率进行统计,能够比较直观地看出哪些代码在测试的时候有被覆盖到,哪些代码被遗漏了。虽然覆盖了并不能代表逻辑一定正确,但如果测试覆盖到了绝大部分的代码,那么我们对版本的质量保障就会有一个较为合理的信心。

1、什么是 IDEA

IDEA 全称 IntelliJ IDEA,是 Java 编程语言开发的集成环境。IntelliJ 在业界被公认为最好的 Java 开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(git、SVN 等)、JUnit、CVS 整合、代码分析、 创新的 GUI 设计等方面的功能可以说是超常的。

2、什么是 JaCoCo

JaCoCo 是一个免费、开源 Java 代码覆盖率工具。

3、IDEA 为什么要集成 JaCoCo

方便查看单元测试用例覆盖率。

4、集成步骤

4.1、被测类

注意:被测类要放在 main 下面,而不是 test 下面

图片

4.2、单元测试用例

注意:单元测试类(CalcTest)必须和被测类(Calc)在同一个包下(com.lemon.testng)

图片

4.3、配置 Code Coverage

图片

选择 Edit Configurations

图片

选择 Code Coverage,再选择 JaCoCo

图片

右键选择 Run with Coverage

图片

自动弹出代码覆盖率界面

4.4、覆盖率报表

报表相对简单,Class 表示类覆盖率,Method 表示方法覆盖率,Line 表示行覆盖率

图片

4.5、代码覆盖情况

单元测试用例主只写了 add 方法,所以 add 方法显示绿色,覆盖状态,sub 方法显示红色,未被覆盖。

图片

新增一个 sub 方法测试用例,再来看结果。

图片

首先 Method 从 1 变成 2,Line 数也增多了。

图片

其次,sub 方法颜色也有变化,if 仍是红色, 但是 else 变成绿色,说明 eles 分支被覆盖。

图片

5、总结

通过上述例子可以看出,通过查看覆盖率,逐步善测试用例,写出的用例至少能保障每个分支都被执行,相比通过需求写用例更能排查出潜在 bug。

需求 ≠代码,不能仅围绕需求写用例,借助 JaCoCo 覆盖率工具编写用例,更符合实际工作需求,更省心省力。

相关推荐

  1. 单元测试(UT)简介

    2024-01-19 09:40:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 09:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 09:40:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 09:40:03       82 阅读
  4. Python语言-面向对象

    2024-01-19 09:40:03       91 阅读

热门阅读

  1. K8S---NetworkPolicy

    2024-01-19 09:40:03       52 阅读
  2. uniapp PDF文件预览/打开

    2024-01-19 09:40:03       55 阅读
  3. 美易平台:美国零售销售数据超预期增长

    2024-01-19 09:40:03       54 阅读
  4. chatgpt和文心一言哪个更好用

    2024-01-19 09:40:03       45 阅读
  5. CSS Hack是什么?ie6,7,8的hack分别是什么

    2024-01-19 09:40:03       57 阅读
  6. Ceph集群修改主机名

    2024-01-19 09:40:03       53 阅读
  7. GraphicsMagick 的 OpenCL 开发记录(一)

    2024-01-19 09:40:03       58 阅读
  8. Golang中记录日志详解

    2024-01-19 09:40:03       55 阅读