首页 > 其他分享 >golang代码覆盖率测试

golang代码覆盖率测试

时间:2023-03-17 17:34:20浏览次数:36  
标签:覆盖率 代码 cover golang test coverage go

1.概述

测试是开发过程的重要部分,也是软件开发生命周期的关键部分。 它可以确保应用程序正常运行和满足客户需求。 本文将涵盖关于 Go 测试的所有须知事项。 我们将从一个简单的测试函数开始,通过更多工具和策略帮助您掌握 Go 中的测试。

在一个流程规范的项目里,如果想发布一行代码到生产环境,都需要完整的测试流程,如果是向外网发布一个功能或版本,那么更需要进行完整的功能测试,其中就包括白盒测试和黑盒测试。尤其是在游戏行业,因为玩法逻辑复杂,很多逻辑很难考虑到,因此覆盖率验证是一个必备的一个流程。比如现在的团队就要求放出的游戏版本的代码覆盖率需要达到100%才算是达到发版标准,因此覆盖率测试在保证代码质量上扮演者重要角色。我们通过覆盖率可以看到我们的代码有哪些是已经跑到的,有哪些是特殊情况绕过了尚未验证,因此通过代码覆盖率我们可以对整个代码逻辑有充分的认识和判断。这篇文章主要介绍如何对Go的代码建立覆盖率,而Go的覆盖率建立依赖go test和go tool cover。

2.编写单元测试代码

每个模块跟一个test代码:

bool_test代码

package utils

import "testing"

func TestBtoI(t *testing.T) {
	b := true
	i := BtoI(b)
	if i != 1 {
		t.Errorf("error")
	}

	b = false
	i = BtoI(b)
	if i != 0 {
		t.Errorf("error")
	}
}

模块以_test结尾;函数以Test开头;输入参数是t *testing.T

3.覆盖率测试

进入项目的根目录,

go test -cover -covermode=count --coverprofile=coverage.out即可:

go test -cover -covermode=count --coverprofile=coverage.out ./model ./controller ./handler
 qicycle@qicycledeMacBook-Pro-3 mage-erp % go test -cover -covermode=count --coverprofile=coverage.out ./model  ./controller ./handler
?   	mage-erp/model	[no test files]
ok  	mage-erp/controller	0.026s	coverage: 2.0% of statements
ok  	mage-erp/handler	0.021s	coverage: 3.1% of statements

可以看到输出了coverage百分比,我这个项目没啥测试代码,临时增加的。

4.覆盖率测试可视化分析

对刚才生成的coverage.out 进行可视化分析:

go tool cover -html=coverage.out

可以看到打开了一个网页:

左边可以选择对应的go文件,右边有列出来cover到的代码,绿色是cover的,红色是没有cover的

这样对项目跑一遍就知道覆盖率的多少了。

 

5.遇到的问题

5.1 如何对指定目录进行计算代码覆盖率

go test -cover -covermode=count --coverprofile=coverage.out ./model ./controller ./handler ./server ./lib

5.2 go tool cover --html=coverage.out只列出部分go文件

那是因为没有对应测试文件的go文件是不会列出来的

标签:覆盖率,代码,cover,golang,test,coverage,go
From: https://www.cnblogs.com/zhanchenjin/p/17227587.html

相关文章

  • 虽然代码运行了,但其中的值为什么没有发生变化呀?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【王者级混子】问了一个Pandas处理的问题,这里拿出来给大家分享下。下面是粉丝自己写的代码:二、实现过程看上去是......
  • 优维低代码:构件编辑器开发
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维......
  • 如何用低代码平台快速搭建一套应用系统
    一、低代码是什么低代码平台是继中台之后又一个火爆的话题,实际上低代码本身并不是一个新颖的话题,也不是最近才有的技术突破和创新,而是存在了十几二十年的概念。早期的大型......
  • 代码去重引发对lamba表达式思考
    对重复代码进行治理,发现很多冗余代码就因为其中的一行无法复用,就拷贝一份,造成大量重复代码,且后期维护成本很高,很容易改漏了 1、使用函数指针进行代码去重如下代码相似......
  • 前端有边界,但低代码没有
    “前端已死”的论调,每隔一段时间就会被翻出来重新讨论,除了先前人们担忧的低代码对前端开发者的影响,还有最近爆火的chatGPT、GPT-4等。作为前端开发者,我非常不认可“前端已......
  • 摊牌了!美政府要求字节跳动出售 TikTok 股票,否则将禁令,低代码也曾被打压
    欲加之罪,何患无辞正值人们对TikTok和其它社交媒体平台对年轻用户的影响进行更广泛、持续的反思之际,美政客们以数据安全为由要求TikTok出售股票,已然不顾文明国家的体面。......
  • 【python爬虫】bs4遍历、搜索文档树 bs4使用css选择器 selenium基本使用 selenium查
    目录上节回顾今日内容0bs4遍历文档树1bs4搜索文档树1.1find方法的其他参数2css选择器3selenium基本使用4无界面浏览器4.1模拟登录百度5selenium其它用法5.0查找标......
  • 用TortoiseGit上传代码到Github的步骤
    下载安装两个软件:   官方网址下载:GitforWindowshttps://gitforwindows.org/Download–TortoiseGit–WindowsShellInterfacetoGithttps://tortoisegit.o......
  • Web漏洞-XSS跨站之代码及httponly绕过
    进入后台获得后台权限:cookie权限进入后台;直接账号密码登录Str-replace   关键字过滤什么是httponly如果在cookie中设置了httponly属性,那么通过js脚本将无法读取到co......
  • 牛客网手撕代码(31-58)
    31.数据累加输出题目实现串行输入数据累加输出,输入端输入8bit数据,每当模块接收到4个输入数据后,输出端输出4个接收到数据的累加结果。输入端和输出端与上下游的交互采......