IntelliJ IDEA本地代码覆盖后恢复原来的代码图解

yizhihongxing

下面我就来详细讲解“IntelliJ IDEA本地代码覆盖后恢复原来的代码”攻略,包含以下内容:

  1. 准备工作
  2. 操作步骤
  3. 示例说明

1. 准备工作

在进行本地代码覆盖后恢复原来的代码前,需要进行以下准备工作:

  1. 在 IntelliJ IDEA 中打开需要覆盖和恢复的项目。

  2. 在项目的 settings.gradle 中添加以下代码:

groovy
include 'buildSrc'

  1. 在项目的 build.gradle 文件中添加以下代码:

```groovy
apply plugin: 'jacoco'

jacoco {
toolVersion = '0.8.5'
}

test {
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/test.exec")
}
}

task jacocoTestReport(type: JacocoReport, dependsOn: ['test']) {
reports {
html.enabled = true
}
// If the following line is commented out, html report won't be generated
// or the report will not contain all data.
executionData(test)
sourceDirectories.setFrom(project.files(project.sourceSets.main.allJava.srcDirs))
classDirectories.setFrom(project.files(project.sourceSets.main.output))
//gradle不支持kotlin项目
//sourceDirectories.setFrom(project.files(project.sourceSets.main.allSource.srcDirs))
//classpath = files(classpath.asPath.split(':').collect { file(it) })
}

tasks.withType(Test) {
jacoco {
reports {
xml.enabled = true
csv.enabled = true
}
}
}
```

2. 操作步骤

完成上述准备工作之后,接下来进行本地代码覆盖后的恢复的具体步骤如下:

  1. 在 IntelliJ IDEA 中打开需要覆盖和恢复的项目。
  2. 运行项目中的测试用例,生成覆盖数据。
  3. 在菜单栏中依次选择 Run -> Edit Configurations,打开编辑运行配置页面。
  4. 点击左侧的 Defaults -> JUnit,将 VM Options 中的参数修改为以下代码:

-javaagent:/Applications/IntelliJ\ IDEA.app/Contents/plugins/jacoco/lib/jacocoagent.jar=destfile=build/jacoco/test.exec,append=false
-Djacoco=true

注意:以上命令中,/Applications/IntelliJ IDEA.app 需要根据实际 IDE 安装路径进行修改。

  1. 在编辑运行配置页面中,点击 OK 保存配置。
  2. 点击 IntelliJ IDEA 工具栏中的 Run 按钮,或使用快捷键 Shift + F10,运行测试用例并生成覆盖数据。

在运行测试用例的过程中,代码覆盖工具 JaCoCo 会将覆盖数据保存在 build/jacoco/test.exec 文件中。

  1. 运行命令生成测试覆盖报告:

./gradlew jacocoTestReport

或者在 IntelliJ IDEA 的 Gradle 工具窗口中找到 jacocoTestReport 任务,右键点击选择 Run

生成的覆盖报告可以在 build/reports/jacoco/test/html/index.html 文件中查看。

  1. 对代码进行覆盖测试后,如果需要恢复原来的代码,可以通过以下步骤完成:

打开覆盖数据报告,找到需要覆盖的代码行,鼠标右键选择 Local History -> Show History,即可弹出版本控制窗口,查看历史修改记录。找到需要恢复的代码版本,右键选择 Revert,即可恢复到指定版本的代码。

3. 示例说明

为了更好地说明本地代码覆盖后恢复原来的代码的具体操作过程,下面给出两个示例。

示例1:

假设代码文件 Hello.java 中有以下内容:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

现在,我们想为这段代码编写一个测试用例,并使用 JaCoCo 进行代码覆盖测试。

  1. 首先,我们在项目根目录下新建一个名为 src/test/java 的目录,用来存放测试用例文件。
  2. src/test/java 目录下新建一个名为 HelloTest.java 的JUnit测试类文件,编写测试代码:

```java
import org.junit.Test;

public class HelloTest {
@Test
public void testHelloWorld() {
HelloWorld.main(new String[]{});
}
}
```

  1. 运行测试用例,并生成覆盖数据。
  2. 打开项目工具栏中的 Gradle 窗口,找到 jacocoTestReport 任务,右键点击选择 Run,即可生成覆盖报告。
  3. 打开覆盖报告,找到需要修改的代码行,右键选择 Local History -> Show History,即可弹出版本控制窗口,查看历史修改记录。

示例2:

假设代码文件 Calculator.java 中有以下内容:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

现在,我们想为这段代码编写一个测试用例,并使用 JaCoCo 进行代码覆盖测试。

  1. 首先,我们在项目根目录下新建一个名为 src/test/java 的目录,用来存放测试用例文件。
  2. src/test/java 目录下新建一个名为 CalculatorTest.java 的JUnit测试类文件,编写测试代码:

```java
import org.junit.Test;

public class CalculatorTest {
@Test
public void testAdd() {
Calculator calculator = new Calculator();
int result = calculator.add(3, 4);
org.junit.Assert.assertEquals(7, result);
}
}
```

  1. 运行测试用例,并生成覆盖数据。
  2. 打开项目工具栏中的 Gradle 窗口,找到 jacocoTestReport 任务,右键点击选择 Run,即可生成覆盖报告。
  3. 打开覆盖报告,找到需要修改的代码行,右键选择 Local History -> Show History,即可弹出版本控制窗口,查看历史修改记录。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IntelliJ IDEA本地代码覆盖后恢复原来的代码图解 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Docker实现Mariadb分库分表及读写分离功能

    准备工作 在开始分库分表及读写分离功能的实现前,需要完成以下准备工作: 安装和配置Docker 创建两个或以上的Mariadb容器 使用mydumper工具备份原始数据库中的表 在备份数据上运行分库分表工具 按照需要在不同的数据库中保存备份数据 实现分库分表功能 按照以下步骤实现分库分表功能: 创建用于存储分片的数据容器。可使用以下命令创建数据容器: doc…

    database 2023年5月21日
    00
  • 某大型网络公司应聘时的笔试题目附答案

    某大型网络公司应聘时的笔试题目附答案 一、考题解析 这个考题是一道面试题,主要考察应聘者的数据结构和算法掌握情况。下面我们将具体分析考题。 1. 题目描述 给定一个数组,返回该数组中第k个最大的元素。要求时间复杂度O(n),n为数组的长度。 2. 解题思路 一个数组中的元素可以用最大堆来存储,最大堆可以用数组来模拟实现。假设数组为A,第一个元素为A[0],则…

    database 2023年5月22日
    00
  • 关于Java中的mysql时区问题详解

    标题:关于Java中的Mysql时区问题详解 正文: 背景 在使用Java访问Mysql数据库时,我们经常会遇到时区问题。比如我们插入一个带有时间的数据到Mysql数据库中,但是实际存储到数据库中的时间和我们传入的时间不符。这是因为Java和Mysql在处理时间数据时,涉及到时区的转换问题。 时区概念 在开始讲解时区问题前,我们先来了解一下时区概念。时区是指…

    database 2023年5月22日
    00
  • SqlServer2016模糊匹配的三种方式及效率问题简析

    下面是详细的攻略: SqlServer2016模糊匹配的三种方式及效率问题简析 背景介绍 在实际工作中,我们经常需要使用模糊匹配来处理一些模糊查询的需求,比如搜索引擎、关键字匹配等。在Sql Server 2016中,模糊查询可以使用三种方式:LIKE,PATINDEX和CONTAINS。 三种方式介绍 1. LIKE LIKE是一种基于通配符的模糊匹配方式…

    database 2023年5月21日
    00
  • oracle丢失temp表空间的处理方法

    Oracle丢失TEMP表空间的处理方法 问题描述 在使用Oracle数据库时,如果由于某些原因导致TEMP表空间不可用,可能会导致一些SQL无法正常执行。例如,在执行某个需要使用TEMP表空间的大型查询时,会提示如下错误信息: ORA-01565: 妥善回滚数据文件‘/oracle/oradata/orcl/temp01.dbf’(0) ORA-01110…

    database 2023年5月18日
    00
  • PHP使用PDO操作sqlite数据库应用案例

    下面是“PHP使用PDO操作sqlite数据库应用案例”的完整攻略: 一、准备工作 1. 安装PHP和SQLite 首先,我们需要安装PHP和SQLite。在Linux系统上可以使用包管理器安装,比如在Ubuntu上可以使用以下命令进行安装: sudo apt-get install php7.2 php7.2-sqlite sudo apt-get ins…

    database 2023年5月21日
    00
  • 如何在Python中删除SQLite数据库中的数据?

    以下是在Python中删除SQLite数据库中的数据的完整使用攻略。 删除SQLite数据库中的数据简介 在Python中,可以使用sqlite3模块连接SQLite数据库,并使用DELETE FROM语句删除数据。删除数据时,需要指定要删除的表和删除条件。删除结果可以使用游标对象的rowcount属性获取。 步骤1:导入模块 在Python中,使用sqli…

    python 2023年5月12日
    00
  • SQL Server中Table字典数据的查询SQL示例代码

    查询Table(表)字典数据是SQL Server数据库管理中必不可少的一部分。Table字典数据的查询可以帮助我们了解表的结构、大小和关系,方便我们进行数据库维护和优化。下面是SQL Server中Table字典数据的查询SQL示例代码的完整攻略: 1.使用系统保存的存储过程查询Table字典数据的SQL示例代码 在SQL Server中,系统自带了sp_…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部