1、测试对比文件准备

  • 文件A:diff1(diff1文件夹下可以放n个文件)

public class Diff1 {
public static void main(String[] args){
int getNum = randomNumber(10,20);
if (getNum==30){
System.out.println("中间数="+getNum);
}else {
System.out.println("此次没有找到="+getNum);
}
}
public static int randomNumber(int minNum,int maxNum){
Random rand = new Random();
int randomNum = rand.nextInt(maxNum);
randomNum = randomNum%(maxNum-minNum+1)+minNum;
return randomNum;
}
}
  • 文件B:diff2(diff2文件夹下可以放n个文件)
public class Diff2 {
public static void main(String[] args){
int addLine =10;
int getNum = randomNumber(10,20);
if (getNum==30){
System.out.println("中间数="+getNum);
}else {
// System.out.println("此次没有找到="+getNum);
}
}
public static int randomNumber(int minNum,int maxNum){
Random rand = new Random();
int randomNum = rand.nextInt(maxNum);
randomNum = randomNum%(maxNum-minNum+1)+minNum;
return randomNum;
}
}

2、git diff对比命令

diff --git /Users/diff1 /Users/diff2

  • 输出结果

diff --git a/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java b/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
similarity index 77%
rename from /Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java
rename to /Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
index 7d6e724..bfca53f 100644
--- a/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff1/Diff1.java
+++ b/Users/cuizhongyuan/Desktop/work/010_project/vueSpringboot/Tal_Back/src/test/java/gitdiff/diff2/Diff2.java
@@ -1,14 +1,15 @@
-package gitdiff.diff1;
+package gitdiff.diff2; import java.util.Random; -public class Diff1 {
+public class Diff2 {
public static void main(String[] args){
+ int addLine =10;
int getNum = randomNumber(10,20);
if (getNum==30){
System.out.println("中间数="+getNum);
}else {
- System.out.println("此次没有找到="+getNum);
+// System.out.println("此次没有找到="+getNum);
}
}
public static int randomNumber(int minNum,int maxNum){

3、输出格式详解(重点)

  • 第一行
diff --git a/Users/diff1/Diff1.java b/Users/diff2/Diff2.java

解释:进行比较的是->diff1版本的Diff1.java(即变动前)和diff2版本的Diff2.java(即变动后)

  • 第二行
index 7d6e724..bfca53f 100644

解释:表示两个版本的git哈希值(index区域的7d6e724对象,与工作目录区域的bfca53f对象进行比较),最后的六位数字是对象的模式(普通文件,644权限)

  • 第三行
--- a/Users/diff1/Diff1.java+++ b/Users/diff2/Diff2.java

解释:"—“表示变动前的版本,”+++"表示变动后的版本

  • 第四行
@@ -1,14 +1,15 @@

解释:其中"-1,14″分成三个部分解释->”-“减号表示第一个文件(即diff1),"1″表示第1行,“14″表示连续14行.合在一起,就表示下面是第一个文件从第1行开始的连续14行.同样的,”+1,15″表示变动后,成为第二个文件从第1行开始的连续15行

  • 最后是具体的变动内容
-public class Diff1 {
+public class Diff2 {
public static void main(String[] args){
+ int addLine =10;
int getNum = randomNumber(10,20);
if (getNum==30){
System.out.println("中间数="+getNum);
}else {
- System.out.println("此次没有找到="+getNum);
+// System.out.println("此次没有找到="+getNum);
}
}
public static int randomNumber(int minNum,int maxNum){

解释:+ int addLine =10;->表示:新增行

| - System.out.println(“此次没有找到=”+getNum);

+// System.out.println(“此次没有找到=”+getNum); ->表示改行的变动(- 表示之前,+表示之后)git diff 没有修改的概念

4、获取到git diff对比结果可以做什么?

通过Git diff可以获取到项目当前分支下提交前后的代码变动结果,有了这个结果进一步解析可以去做代码覆盖率的实现,在测试阶段可以作为测试覆盖度的一个指标,同时也可以查漏补缺那些业务代码逻辑没有测到,实现精准测试的目的。

  • 实际项目中实践如图:



更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:

代码差异对比之git diff详解!的更多相关文章

  1. git diff详解

    这篇文章很好很好 https://www.cnblogs.com/alfayed/p/4682780.html

  2. Git命令详解

    一个中文git手册:http://progit.org/book/zh/ 原文:http://blog.csdn.net/sunboy_2050/article/details/7529841 前面两 ...

  3. Git 命令详解及常用命令

    Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 1 2 3 4 Work ...

  4. Git应用详解第九讲:Git cherry-pick与Git rebase

    前言 前情提要:Git应用详解第八讲:Git标签.别名与Git gc 这一节主要介绍git cherry-pick与git rebase的原理及使用. 一.Git cherry-pick Git ch ...

  5. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  6. 【Git使用详解】Egit的常用操作详解

    常用操作 操作 说明 Fetch 从远程获取最新版本到本地,不会自动merge Merge 可以把一个分支标签或某个commit的修改合并现在的分支上 Pull 从远程获取最新版本并merge到本地相 ...

  7. git部署详解

    1.1 关于版本控制 1.1.1 本地版本控制 本地版本控制系统 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别.这么做唯一的 好处就是简单,但是特别容易犯错.有 ...

  8. ORM框架对比以及Mybatis配置文件详解

    ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC ​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...

  9. iOS开发——开发实战篇&版本控制SVN和Git使用详解

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  10. git命令详解( 四 )

    此篇为git命令详解的第四篇,话不多说,我们直接上知识点好吧 git Push 偏离的工作 gitPush: 此命令负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录.一旦 git ...

随机推荐

  1. 让你的C程序,可以自动更新版本信息

    一.软件管理 稍微上点规模的软件开发往往周期都非常长, 中间会产生很多临时版本, 这些临时版本往往会有各种各样的bug, 由于项目参与的人员众多.水平参差不齐, 软件分支众多.功能复杂, 经常会有各种 ...

  2. 使用 python flask 框架实现一个简单的抽奖系统

    Flask 实现一个简易的抽奖系统 项目前置知识 目前 python主流的框架: Django .flask .Tornado 简介: 1.框架 框架? 为什莫使用框架? (前置知识讲解比较冗杂,望谅 ...

  3. 速通c++

    文章目录 1.什么是c++. 2什么是面向对象,什么又是面向过程. 3.C++的灵魂,c++的类. 4.如何定义一个类. 5.什么是对象. 6.如何定义一个对象. 直接定义: 在堆里面定义. 删除对象 ...

  4. homeassistant自动化记录ping追踪在家联动设备

    2022年8月29日修改代码块 进入hass的配置文件,docker版从portainer中查看配置情况 文件名configuration.yaml 下述添加到最后 # ping根据ip追踪手机 de ...

  5. 学习真DDD的最佳路径

    本文书接上回<DDD是软件工程的第一性原理?>,关注公众号(老肖想当外语大佬)获取信息: 最新文章更新: DDD框架源码(.NET.Java双平台): 加群畅聊,建模分析.技术实现交流: ...

  6. C# 读取DBF文件到Datatable

    此种方式不依赖与任何驱动,第三方插件. 核心代码TDbfTable如下: using System; using System.Collections.Generic; using System.Te ...

  7. 事件触发器TRIGGER

    我所理解的事件 MYSQL触发器 就好比是 JavaScript 中的 Object.defineProperty,通过观察某些行为,然后做些事情 创建触发器 DELIMITER $$ CREATE ...

  8. 小tips:怎样实现简单的前端hash与history路由方式?

    前端路由实现方式,主要有两种,分别是history和hash模式. hash模式 不同路由对应的hash是不一样的,如何能够监听到URL中关于hash部分发生的变化?浏览器已经暴露给我们一个现成的方法 ...

  9. Node.js开发博客项目笔记-初始化路由(博客列表、新增、更新、删除、详情、登录)(3)

    工程目录 如图所示,工程目录如下: 我们在工程下新建src的目录,src目录下新建三个文件夹: controller:交互数据放到该目录下: model:model类放到该目录下: router:路由 ...

  10. TypeScript – 冷知识

    当 generic return 遇上 parameter 报错了.原因是 querySelector 默认返回类型是抽象的 Element. 而 method 参数要求的是具体的 InputElem ...