利用JaCoCo统计接口测试中代码覆盖率

​        做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求。这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆盖率,场景的覆盖率,接口的覆盖率,代码的覆盖率等,本文介绍接口测试的代码覆盖率。那么我们来看看如何是实现的。

        1、环境的搭建

        1.1搭建 ant 环境

            https://ant.apache.org/bindownload.cgi

        我下载的是1.10.7版本,这个是因为 每个版本对应的java的版本 不一样,这个在ant的官网有介绍,下载的zip包 ,然后解压,然后去配置环境变量,我用的是mac配置的,打开:vi .bash_profile

        

export ANT_HOME=/Users/lileilei/Downloads/apache-ant-1.10.7

export PATH=$PATH:.:${ANT_HOME}/bin

        配置完毕后source .bash_profile  立即生效

    

    

        到这里,我们已经设置好了我们的ant的环境。

        1.2 下载JaCoCo。

            下载地址:https://www.jacoco.org/jacoco/

        下载完毕后,解压即可。

       以上搭建了所需的环境。

       2.ant的build文件配置

           通过build.xml拉去覆盖率,具体配置文件如下:

     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<project name="plate_id_sample_service" xmlns:jacoco="antlib:org.jacoco.ant">
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="/Users/lileilei/Downloads/jacoco-0.8.5/lib/jacocoant.jar"/>
    </taskdef>
    <target name="report">
        <jacoco:report>
            <executiondata>
                <file file="jacoco.exe"/>
            </executiondata>
 
            <structure name="pan">
                <!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
                <group name="pan">
                    <classfiles>
                        <!--.class文件路径,可以放在客户端-->
                        <fileset dir="/Users/lileilei/Desktop/plan/target/classes"/>
                    </classfiles>
                    <sourcefiles encoding="utf-8">
                        <!--源代码路径,可以放在客户端-->
                        <fileset dir="/Users/lileilei/Desktop/plan/src/main/java" />
                    </sourcefiles>
                </group>
            </structure>
 
            <!-- report文件保存地址 -->
            <html destdir="report"   encoding="utf-8"/>
 
        </jacoco:report>
    </target>
</project>

 


 

       这是完整的配置文件,我在配置的地方加好注释,大家可以根据自己的需求进行设置。

        然后去启动要测试的待测服务,这里我是用的jar 启动的服务,启动方式。

            

java -javaagent:/Users/lileilei/Downloads/jacoco-0.8.5/lib/jacocoagent.jar=dumponexit=true,destfile=jacoco.exe -jar demo-2.0.6.RELEASE.jar

          这里需要javaagent,这里是jacoco的agent,需要替换成自己的路径就可以。

            启动完成后,就可以开始进行测试了,

            我使用的swgger2,进行了简单的接口测试,后获取覆盖率。

            

在build.xml目录,使用ant获取jacoco.exe
然后用 ant report产生测试报告

            打开测试报告,

        这样,我们就获取到了接口测试的全量代码的覆盖率。我们可以打开获取每个类,每个函数的覆盖率。

        其实在真正的覆盖率,我们还需要考虑 增量代码覆盖率。这里简单的对全量代码的覆盖率做介绍。抛砖引玉,大家可以继续探索。

        这里给大家提供了一种接口测试的覆盖率的统计方式。当然了还有其他方式,大家可以根据自己的需求进行去探索。

        

            需要明确,提供合理方案。

            方案合理,解决合理需求。

            控制合理,合理控制时间。

            思路清晰,善于解决问题。

            思路方案,取决于实践中。

            大量锻炼,才能思维敏捷。

            闭门造车,僵化思路难成。

            点滴积累,成就美好明天。

 

    关注雷子说测试

    

 

posted @   北漂的雷子  阅读(2815)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示