Go工具链之go tool cover使用方法和示例详解

 更新时间:2023年07月19日 09:23:42   作者:路多辛  
go tool cover是Go工具链中的一个命令,作用是分析测试用例的代码覆盖率,本文将对go tool cover 作用,使用方法和使用场景作一个简单的介绍,感兴趣的同学可以参考阅读一下

go tool cover 作用

go tool cover 是 Go 工具链中的一个命令,作用是分析测试用例的代码覆盖率。通过对测试覆盖文件进行分析,帮助开发人员和测试人员了解在测试中哪些代码执行了以及执行了多少次。

通过代码覆盖率分析可以知道测试用例执行后覆盖了多少代码行、分支和语句以及是否存在未被测试用例覆盖的代码,有助于发现代码中的潜在问题和错误,提高代码的质量和可靠性。

go tool cover 使用方法和使用示例

首先需要提供使用 go test 命令生成的代码覆盖文件(也可提供通过其他方式生成的和 go test 生成的文件格式一致的文件)。举个例子,以 github.com/luduoxin/json-validator-go 项目为例,clone 代码后,切换到项目的 validator 目录,打开终端,执行如下命令:

 $ go test -coverprofile=c.out

截取 c.out 的前两行内容如下

mode: set
github.com/luduoxin/json-validator-go/validator/scanner.go:11.30,15.2 3 

第二行每个部分代表的意思如下:

"文件:起始行.起始列,结束行.结束列 该基本块中的语句数量 该基本块被执行到的次数"

接下来看下使用go tool cover 来分析上面生成的文件 c.out 的方法,使用如下命令来查看每个方法的覆盖率和总的覆盖率

$ go tool cover -func=c.out

默认是将结果输出到标准输出,可以使用 -o 将结果输出到其他地方,例如输出到文件:

$ go tool cover -func=c.out -o coverage.out

使用如下方法生成一个 html 页面并且自动打开浏览器来展示覆盖率的详细情况:

$ go tool cover -html=c.out

这样可以非常直观地查看代码覆盖率的情况,已被覆盖的代码被标记为绿色(绿色越深,表示被覆盖的次数越多)、未被覆盖的代码被标记为红色、不需要检测的代码被标记为灰色,将鼠标移到代码块上,还会弹出对应的被覆盖次数。也可以不自动打开浏览器展示,而是将 html 内容输出到其他地方:

$ go tool cover -html=c.out -o coverage.html

要生成覆盖文件,首先需要对源代码插桩,使用 go tool cover 可以生成插桩后的代码,例如:

go tool cover -mode=set -var=CoverageVariableName scanner.go

执行后会输出插桩后的源代码到标准输出。

go tool cover 使用场景

可以用于以下场景:

  • 开发人员可以用于分析单元测试用例的覆盖率,通过分析单元测试用例的覆盖率,以优化单元测试用例。
  • 测试人员可以用于分析测试用例的覆盖率,通过一定的手段,随着测试用例的不断执行,持续生成覆盖文件,然后使用 go tool cover 分析覆盖率,发现可能存在的测试盲点和未被测试用例覆盖的代码。

到此这篇关于Go工具链之go tool cover使用方法和示例详解的文章就介绍到这了,更多相关go tool cover使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言字符串拼接方式与性能比较分析

    Go语言字符串拼接方式与性能比较分析

    这篇文章主要为大家介绍了Go语言字符串拼接方式与性能比较示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • go的defer和闭包示例说明(非内部实现)

    go的defer和闭包示例说明(非内部实现)

    这篇文章主要为大家介绍了go的defer和闭包示例说明(非内部实现),有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Go语言编译时为exe添加图标和属性信息的方法

    Go语言编译时为exe添加图标和属性信息的方法

    在使用Go语言开发应用程序时,有个非常方便的地方就是编译得到的可执行文件可以不依赖任何动态链接库、并且不需要任何运行环境即可运行,本文给大家介绍Go编译时为exe添加图标和属性信息的方法,需要的朋友可以参考下
    2023-09-09
  • Go本地测试小技巧解耦任务拆解

    Go本地测试小技巧解耦任务拆解

    这篇文章主要为大家介绍了Go本地测试解耦任务拆解及沟通详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go Web 编程中的模板库应用指南(超详细)

    Go Web 编程中的模板库应用指南(超详细)

    这篇文章主要介绍了Go Web 编程中的模板库应用指南,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 初探Golang数据结构之Slice的使用

    初探Golang数据结构之Slice的使用

    在学习Go语言时,一直对数组和切片的使用场景好奇,不明白为什么推荐使用切片来代替数组,所以本文就来和大家梳理一下Slice切片的相关知识吧
    2023-09-09
  • goland 清除所有的默认设置操作

    goland 清除所有的默认设置操作

    这篇文章主要介绍了goland 清除所有的默认设置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang验证器之validator是使用详解

    Golang验证器之validator是使用详解

    Validator是一个 Golang 的第三方库,用于对数据进行校验,常用于 API 的开发中,对客户端发出的请求数据进行严格校验,防止恶意请求。本文通过示例详细讲解了Validator的使用,需要的可以参考一下
    2022-08-08
  • go语言 http模型reactor示例详解

    go语言 http模型reactor示例详解

    这篇文章主要介绍了go语言 http模型reactor,接下来看一段基于reactor的示例,这里运行通过 go run main.go,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • golang处理TIFF图像的实现示例

    golang处理TIFF图像的实现示例

    本文介绍了在Go语言中处理TIFF图像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03

最新评论