单元测试和功能测试代码覆盖率实操详解(2)

发表于:2023-8-04 10:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:知乎

  Jacoco工具演示
  大家去它的官网就可以下载源码包,把下载的Jacoco源码包进行解压,我们会进入到一个叫做doc的一个文件夹。这个文件夹里有一个example文件夹。
  进去之后,有一个build文件夹。这是一个项目,是官方给我们举的一个例子。这个例子是很简单的几个java代码文件,然后给你写了一段单元测试,让你通过运行单元测试的方式去运行这个项目。
  比如说你的项目里有两个文件,一个是src文件,还有一个文件是测试用例,我们称之为test文件。这个src需要先编译成.class,然后进行打包编译。由java文件编译成一个.class文件,再编译成可执行的文件去执行。
  假如说我们的项目是Maven执行起来的,我们的项目执行起来之后,我们运行单元测试的脚本,运行单元测试的脚本就肯定会访问到业务代码,这个时候jacoco在同步统计。因为这个项目里面集成了Jacoco,统计后会生成一个中间文件,然后最后讲这个中间文件生成报告。
  项目打包编译完成了,单元测试也运行完成了,单元测试运行到底测到了哪些代码也被统计出来了,在项目指定的一个路径里面。接下来我们就一起演示一下。
  我们可以看到这个build文件夹里有好几个文件,我们都知道build.xml是Ant的构建文件,pom.xml是Maven的构建文件,我们先来跑Ant的构建文件。
  打开一个cmd的窗口命令,进入到这个项目里。执行Ant,我们就不执行Ant build了,大家都知道,我们在执行Ant的时候,它会去找当前路径下的build.xml的文件。
  这个build.xml文件里写的是对整个Java工程进行代码的编译,代码的打包执行,统计代码覆盖率,并且出局一个Jacoco的报告。它都写在这里面了,你自己也可以把你的项目里面也加上Jacoco的代码统计,学着官方的build文件自己写一个,完全是可以运行的,我们跑一下试一试。
  我们可以看到,先进行了clean,又进行了compile编译,又进行了单元测试,里面是它打印出的一些逻辑,很简单的一些单元测试的用例,一些加减乘除的计算,然后根据jacoco的执行文件出报告。
  最后我们看到build也成功了,报告也出来了,接下来咱们一起看看报告。
  这个报告是官方写死的一个报告,但是你可以自己去配置文件中修改。我们可以看到在咱们的构建文件中生成了一个叫target的文件夹,在set里面有一个叫jacoco的报告,里面有html的报告,也有xml的报告。
  我们打开index这个报告来看一下,里面有两个包。它里面有行覆盖,分支覆盖,语句覆盖等不同覆盖的维度,绿色的表示被覆盖了,红色的表示没有被覆盖。
  我们点开其中一个,这里面有两个类,展示的是每个类的覆盖情况。
  里面有几种方法,这里面是每个方法的覆盖情况,如果你觉得还不够,我们可以再把方法点开。
  点开之后我们可以看到里面就到具体的代码的覆盖的情况了。
  以上就是Jacoco的一个基本的流:运行、编译、执行单元测试、统计、出报告。我们再演示一下如果运行pom.xml的情况,很多朋友现在公司里已经都不用Ant了,用的是Maven,下面我们一起看看用Maven的情况。
  最后我们可以看到总共用了7秒多的时间,出的报告还在刚才上面说的那个文件夹,因为它们俩写的路径是一样的。我们可以看到结果界面也都是一样的。
  这就是我们所说的单元测试的覆盖率。很多测试的朋友可能会不太关心,因为很多时候这个测试脚本是开发做的。一般的单元测试,咱们的测试人员可能不会去编写测试用例,但是我们可以帮助开发去辅助执行。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号