springboot项目中jacoco服务端部署使用

为了在Spring Boot项目中使用Jacoco服务端进行代码覆盖率测试,需要按照以下步骤进行配置和部署。

步骤一:引入 Jacoco Maven 插件

在Spring Boot项目的 pom.xml 文件中引入 Jacoco Maven 插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.4</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-check</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <rule>
                                <element>PACKAGE</element>
                                <limits>
                                    <limit>
                                        <counter>LINE</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.80</minimum>
                                    </limit>
                                </limits>
                            </rule>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

在 Jacoco Maven 插件中,我们定义了三个执行过程,分别是:

  • prepare-agent:在测试阶段监控项目,记录代码的覆盖率;
  • report:在打包阶段生成 Jacoco 的覆盖率报告;
  • check:在打包阶段检查代码覆盖率是否达到预设的要求(例如至少80%覆盖率)。

步骤二:配置 Jacoco 服务端

创建一个新的 Maven 项目,用于部署 Jacoco 服务端,可以参考 官方文档 创建 pom.xml

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>jacoco-server</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.core</artifactId>
            <version>0.8.4</version>
        </dependency>
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.report</artifactId>
            <version>0.8.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <archive>
                        <manifestEntries>
                            <Premain-Class>org.jacoco.agent.rt.RT</Premain-Class>
                            <Class-Path>jacoco-core.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

在 Jacoco 服务端 Maven 项目的 pom.xml 中,我们引入了 org.jacoco.coreorg.jacoco.report 两个依赖。

此外,我们还需要配置 Maven War 插件,将服务端打包成 war 文件,并在 Manifest 文件中添加 Jacoco 服务端的启动信息。

步骤三:启动 Jacoco 服务端

运行 Jacoco 服务端 Maven 项目,生成 war 文件,在 Tomcat 等 Servlet 容器中启动服务端。

启动服务端的方式,可以通过在 CATALINA_OPTS 中添加 Jacoco 的 JVM Arguments 来实现:

export CATALINA_OPTS="-javaagent:/path/to/jacocoagent.jar=destfile=/path/to/jacoco-server.exec,output=tcpserver,port=6300"

以上命令表示:在启动 Tomcat 时,通过 Java Agent 的形式启动 Jacoco,将统计信息输出到 jacoco-server.exec 文件中,并通过 TcpServer 的方式将结果输出到端口 6300

步骤四:配置 Spring Boot 项目

在 Spring Boot 项目的 application.yml 中配置 Jacoco 的服务端地址及端口:

jacoco:
  agent:
    address: "tcp://localhost:6300"

步骤五:运行测试

在 Spring Boot 项目的测试代码中,添加 Jacoco 的 Agent 参数:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = "spring.jacoco.agent.address=tcp://localhost:6300")
public class MyTest {

    @Test
    public void testMethod() {
        // Your test code
    }
}

在运行 Spring Boot 项目的测试代码时,Jacoco 的 Agent 就会开始监视代码的覆盖率情况,并将结果发送到 Jacoco 服务端。

示例一:使用 Maven 打包

在 Spring Boot 项目的根目录下,运行以下命令:

mvn clean package

这条命令会执行 Jacoco 插件中定义的三个过程,并在 target/site/jacoco/index.html 中生成 Jacoco 的代码覆盖率报告。

示例二:使用 Gradle 打包

在 Spring Boot 项目的根目录下,运行以下命令:

./gradlew clean build

这条命令会执行 Jacoco 插件中定义的三个过程,并在 build/reports/jacoco/html/index.html 中生成 Jacoco 的代码覆盖率报告。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot项目中jacoco服务端部署使用 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • SQLServer之修改标量值函数

    下面是关于SQL Server修改标量值函数的完整攻略,包括修改方法、注意事项和两个示例说明。 修改方法 要修改SQL Server中的标量值函数,可以按照以下步骤进行: 打开SQL Server Management Studio,连接到目标数据库。 在“对象资源管理器”中,展开“程序性对象”节点,找到要修改的标量值函数。 右键单击要修改的标量值函数,选择…

    other 2023年5月6日
    00
  • spring data jpa如何只查询实体部分字段

    当使用Spring Data JPA时,您可以使用Projection来仅查询实体部分字段。Projection允许您定义一个接口,该接口仅包含您想要选择的字段。下面是对如何使用Spring Data JPA来仅查询实体部分字段的完整攻略: 步骤1:创建Projection 创建一个Projection接口,该接口仅包含要选择的字段。例如,我们将创建一个名为…

    other 2023年6月25日
    00
  • Win10正式版ESD升级镜像官方下载地址汇总(64为/32位)

    Win10正式版ESD升级镜像官方下载地址汇总(64位/32位)攻略 本攻略将详细介绍如何获取Win10正式版ESD升级镜像的官方下载地址,并提供两个示例说明。 步骤一:访问官方网站 首先,打开你的网络浏览器,并访问微软官方网站。你可以在以下网址找到官方下载页面: https://www.microsoft.com/zh-cn/software-downlo…

    other 2023年8月4日
    00
  • spring cloud 配置中心native配置方式

    让我为您详细讲解“Spring Cloud配置中心native配置方式”的完整攻略。 1. 什么是Spring Cloud配置中心? Spring Cloud Config是一个可扩展的配置管理工具,支持应用程序在不同环境中便捷地管理和维护配置文件。它可以将各种不同环境的配置文件存储在Git仓库等分布式环境中进行集中配置管理。 2. Spring Cloud…

    other 2023年6月25日
    00
  • javascript-webkitrequestfullscreen不是函数

    JavaScript WebKitRequestFullScreen不是函数攻略 在JavaScript中,我们可以使用requestFullScreen()方法来请求全屏显示。但是,在某些情况下,我们可能会遇到WebKitRequestFullScreen is not a function错误。在本攻略中,我们将介绍这个错误的原因,并提供一些解决方案和示…

    other 2023年5月9日
    00
  • 用js正确判断用户名cookie是否存在的方法

    判断用户名Cookie是否存在的方法主要涉及以下几个步骤: 1.获取当前网页中所有的Cookie2.遍历Cookie,查找是否存在用户名的Cookie3.如果存在,则说明用户已经登录;否则,说明用户未登录 下面以 JavaScript 为例,介绍具体的实现方法。 获取当前网页中所有的Cookie 可以使用 document.cookie 获取当前网页中所有的…

    other 2023年6月27日
    00
  • 关于linux:cron每分钟运行一次

    以下是关于“关于Linux:cron每分钟运行一次”的完整攻略,包含两个示例。 关于Linux:cron每分钟运行一次 cron是Linux系统中的一个定时任务工具,可以用于定时执行一些命令或脚本。以下是关于如何设置cron每分钟运行一次的详细攻略。 1. 编辑crontab文件 我们可以通过编辑crontab文件设置cron每分钟运行一次。以下是一个编辑c…

    other 2023年5月9日
    00
  • Docker部署nginx并修改配置文件的实现方法

    下面我将详细讲解“Docker部署nginx并修改配置文件的实现方法”的完整攻略。这个攻略分为以下几个步骤: 安装Docker:这是部署nginx的前置步骤。Docker是一个开源的容器引擎,可以用来快速构建、部署和测试应用程序。在安装Docker的过程中,我们需要先安装Docker Engine和Docker Compose两个组件。 下载nginx镜像:…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部