【实践】golang代码覆盖率分析-goc使用

golang代码覆盖率分析-goc使用


golang是一个开发效率非常高、代码安全性高的开发语言。同时具备优秀的跨平台特性,在windows、Linux、macos、android native层可实现一次编码,多平台编译运行。同时,golang本身集成了非常多的代码测试工具,现在介绍的是goc代码覆盖率测试工具,主要从实际操作出发,基本上跟着做一遍就会了,有了goc的加持,让我们开发的代码简洁易于维护,开始…

1、安装goc

# Mac/AMD64
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-darwin-amd64.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L  | tar -zx && chmod +x goc && mv goc /usr/local/bin

# Linux/AMD64
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-linux-amd64.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L  | tar -zx && chmod +x goc && mv goc /usr/local/bin

# Linux/386
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-linux-386.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L  | tar -zx && chmod +x goc && mv goc /usr/local/bin

2、使用步骤

goc server
goc build --center="http://127.0.0.1:7777"
./testPlatform
goc profile -o test.cov
go tool cover -func=test.cov
gocov convert test.cov |gocov-html > views/test_cov.html

a) 首先部署一个服务注册中心goc server,它将会作为枢纽服务跟所有的被测服务通信
启动goc server
b) 用goc build --center=“” 命令编译被测程序
在这里插入图片描述
c)环境部署好之后,就可以做任意的测试,如本项目gotest中跑接口自动化测试用例
d) 覆盖率文件生成及查看
通过goc profile --center=""查看被测集群的覆盖率结果
通过goc profile -o a.cov生成覆盖率文件

goc profile -o a.cov
go tool cover -func=a.cov
gocov convert a.cov |gocov-html >cov.html
可通过go tool cover -func=merge.cov查看测试集覆盖率
在这里插入图片描述在这里插入图片描述
注:如果是多个覆盖率文件,则可合并成一个,如下命令:
goc merge a.cov b.cov -o merge.cov
e) 覆盖率测试完成后,需要生成html报告
安装gocov和gocov-html

go install github.com/axw/gocov/gocov@latest
go install github.com/AlekSi/gocov-xml@latest
go install github.com/matm/gocov-html@latest
go get github.com/axw/gocov/gocov
go get github.com/AlekSi/gocov-xml
go get github.com/matm/gocov-html

报告生成命令

gocov convert a.cov |gocov-html >cov.html

在这里插入图片描述

3、扩展相关

vscode插件使用
a、安装插件Goc Coverage
b、在项目根目录运行goc run .
c、在settings.json中修改goc.serverUrl为当前的server端地址
在这里插入图片描述
d、在vsocde最下方工具栏中打开Goc Coverage为ON状态(默认为OFF状态),运行自动化接口测试,即可看到相关代码被测试到同时背景色变绿
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我知道你的问题了。首先,使用beego框架和go-socket.io搭建聊天室需要以下步骤: 1. 安装beego和go-socket.io ```shell go get github.com/astaxie/beego go get github.com/googollee/go-socket.io ``` 2. 创建beego项目 ```shell bee new chatroom cd chatroom ``` 3. 在main.go中引入go-socket.io的包并创建socket.io服务器 ```go package main import ( "github.com/astaxie/beego" "github.com/googollee/go-socket.io" ) func main() { server, err := socketio.NewServer(nil) if err != nil { beego.Error("Socket.IO server creation failed: ", err) return } // TODO: 后续代码 } ``` 4. 添加路由 ```go server.On("connection", func(so socketio.Socket) { beego.Info("New user connected.") // 处理用户连接事件 so.On("chat", func(msg string) { beego.Info("Message received: ", msg) // TODO: 处理消息 }) // 处理用户断开连接事件 so.On("disconnection", func() { beego.Info("User disconnected.") }) }) // 处理根路由 beego.Router("/", &controllers.MainController{}) // 处理socket.io路由 beego.Handler("/socket.io/", server) beego.Handler("/socket.io.js", http.FileServer(http.Dir("./node_modules/socket.io-client/dist/")).ServeHTTP) ``` 5. 在前端页面上添加socket.io客户端代码 ```html <script src="/socket.io.js"></script> <script> var socket = io.connect('http://localhost:8080'); socket.on('connect', function () { console.log('Connected to server.'); }); socket.on('chat', function (message) { console.log('Message received: ' + message); }); socket.on('disconnect', function () { console.log('Disconnected from server.'); }); </script> ``` 6. 处理聊天消息 ```go server.On("connection", func(so socketio.Socket) { beego.Info("New user connected.") // 处理用户连接事件 so.On("chat", func(msg string) { beego.Info("Message received: ", msg) // 广播消息给所有用户 server.BroadcastToAll("chat", msg) }) // 处理用户断开连接事件 so.On("disconnection", func() { beego.Info("User disconnected.") }) }) ``` 这样,你就可以使用beego框架和go-socket.io搭建一个简单的聊天室了。当然,以上代码只是一个简单的示例,你可以根据具体需求进行修改和扩展。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值