首页 > 其他分享 >docker+jacoco构建接口测试覆盖率

docker+jacoco构建接口测试覆盖率

时间:2023-07-19 23:11:59浏览次数:40  
标签:端口 jar 接口 jacocoagent org docker jacoco

代码中需要更改的内容

Dockerfile

1.在文件中引入jacocoagent.jar,引入后需检查是否引入成功

ADD ./jacocoagent.jar  /jacocoagent.jar

2.打开jacocoagent监控端口,不能与其他jacocoagent端口重复,此端口也是docker容器启动的必填项

EXPOSE 9926

3.加入jacocoagent启动参数,端口号与第2条填入的参数相同,address由于是docker环境所以默认填0.0.0.0

-javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=9926,address=0.0.0.0

pom.xml

引入jacoco

<!--代码覆盖率依赖-->
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.agent</artifactId>
            <version>0.8.7</version>
            <classifier>runtime</classifier>
        </dependency>

设置jacoco插件细节

<plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.7</version>
                <executions>
                    <execution>
                        <id>default-instrument</id>
                        <goals>
                            <goal>instrument</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-restore-instrumented-classes</id>
                        <goals>
                            <goal>restore-instrumented-classes</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- rules里面指定覆盖规则 -->
                    <rules>
                        <rule implementation="org.jacoco.maven.RuleConfiguration">
                            <element>BUNDLE</element>
                            <limits>
                                <!-- 指定方法覆盖到80% -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>METHOD</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0.80</minimum>
                                </limit>
                                <!-- 指定指令覆盖到80% -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>INSTRUCTION</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0.80</minimum>
                                </limit>
                                <!-- 指定行覆盖到80% -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>LINE</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0.80</minimum>
                                </limit>
                                <!-- 指定类覆盖到100%,不能遗失任何类 -->
                                <limit implementation="org.jacoco.report.check.Limit">
                                    <counter>CLASS</counter>
                                    <value>MISSEDCOUNT</value>
                                    <maximum>0</maximum>
                                </limit>
                                ​
                            </limits>
                        </rule>
                    </rules>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.7</version>
                <configuration>
                    <destFile>jacoco.exec</destFile>
                    <dataFile>jacoco.exec</dataFile>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

到此代码部分的已经设置完成,接下来是docker的设置

在原有的容器端口外,加上上面设置的jacocoagent端口,设置完成后,点击ok

到此,覆盖率文件已经生成,接下来是获取覆盖率文件exec

首先在服务端机器上配置ant

然后创建build.xml,用于通过ant获取覆盖率文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">   
    <property name="jacocoantPath" value="D:\jacocoant.jar"/>
    <property name="integrationJacocoexecPath" value="jacoco-integration.exec"/>
    
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
      <classpath path="${jacocoantPath}" />
    </taskdef>

	<?如果需要获取多个容器的覆盖率信息,则dump里添加多个的jacocoagent监控端口就可?>
    <target name="dump">
	    <jacoco:dump address="192.168.99.99" port="9926" reset="false" destfile="${integrationJacocoexecPath}" append="true"/>
    </target>
</project>

最后,使用idea分析覆盖率文件即可!

标签:端口,jar,接口,jacocoagent,org,docker,jacoco
From: https://www.cnblogs.com/yunjie465/p/17567042.html

相关文章

  • Docker--了解及基础使用篇
    Docker--了解及基础使用篇Docker架构:Docker包括三个基本概念:镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对......
  • docker启用zabbix
    dockerrun--namezabbix-db-ePOSTGRES_USER=zabbix-ePOSTGRES_PASSWORD=zabbix_pass-dpostgresdockerrun--namezabbix-server-eDB_SERVER_HOST=zabbix-db-ePOSTGRES_USER=zabbix-ePOSTGRES_PASSWORD=zabbix_pass--linkzabbix-db:postgres-p10051:10051......
  • 多主机 docker redis集群
    多主机DockerRedis集群在分布式系统中,Redis是一个常用的内存数据库,它提供了高性能的键值存储。然而,在面对大流量的情况下,单个Redis实例可能无法满足需求。为了提高可用性和性能,我们可以使用多主机的Redis集群。Docker是一个流行的容器化平台,它可以帮助我们轻松地创建和......
  • 使用python调用http接口
    使用Python调用HTTP接口在现代的软件开发中,经常需要用到HTTP接口来实现与服务器的数据交互。Python作为一门强大的编程语言,提供了丰富的库和工具来简化HTTP接口的调用过程。本文将一步步教会你如何使用Python来调用HTTP接口。整体流程下面是调用HTTP接口的整体流程,可以用表格展......
  • 声明式pipeline docker镜像构建推送
    实现声明式PipelineDocker镜像构建推送作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何实现“声明式PipelineDocker镜像构建推送”。下面将详细介绍整个流程以及每一步需要做的事情,包括所需的代码和代码的注释。流程概述声明式Pipeline是一种用于定义Jenkins任务的方......
  • 修改docker的cggroup
    如何修改docker的cgroup简介Docker是一种开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个可移植的容器。cgroup(ControlGroup)是Linux内核提供的一种机制,用于限制和隔离组内的进程资源。在Docker中,我们可以通过修改cgroup参数来限制容器的资源使用情况。本文将指导刚......
  • Alibaba Cloud Linux 3 docker 开通2375
    AlibabaCloudLinux3上开通Docker2375端口Docker是一种开源的容器化平台,可以帮助开发者将应用程序和依赖项打包到一个独立的容器中,以便在任何地方运行。在AlibabaCloudLinux3上开通Docker2375端口可以让我们通过远程API访问Docker服务,方便地管理和监控容器。步骤......
  • @Resource A component required a bean of type 'com.gao.docker.dao.TestMapper
    实现@Resource注解报错解决方法一、问题描述在使用@Resource注解注入依赖时,可能会遇到以下错误:Acomponentrequiredabeanoftype'com.gao.docker.dao.TestMapper'thatcouldnotbefound.这个错误通常发生在使用Spring框架进行依赖注入时,表示无法找到对应类型的bean。......
  • docker-compose安装EFK
    一、环境IP系统配置版本192.168.10.100Centos7.92核4GDockerComposeversionv2.19.1、EFK-7.17.11 EFK版本是试用版本二、安装docker环境yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttps://mirrors.a......
  • docker “no space left on device”
     1、先使用dockerinfo查看docker的信息dockerinfo可以看到docker的根路径是 /var/lib/docker  2、查看docker根路径的磁盘占用率df-Th/var/lib/docker3、清理docker 方法一:删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)dockerrm$(docker......