golang代码覆盖率
hexg1016 · · 1013 次点击 · · 开始浏览参考文章:<u>https://studygolang.com/articles/11934</u>
一 Main函数的test文件
package main
// This file is mandatory as otherwise the filebeat.test binary is not generated correctly.
import (
"testing"
"flag"
)
var systemTest *bool
func init() {
systemTest = flag.Bool("systemTest", false, "Set to true when running system tests")
}
// Test started when the test binary is started. Only calls main.
func TestSystem(t *testing.T) {
if *systemTest {
main()
}
}
注意:
1 命名:看一下自己代码的main()函数所在的go文件名称,直接命名为*_test.go文件即可; 比如,代码文件名 main_server.go,可直接命名为main_server_test.go
2 目录:放在与被测文件同目录下
二 编译代码
1 查看main函数,将其中的os.Exit()更改为return (根据实际情况分别为return/return 0/return 255...)
2 原编译命令为go build
此处使用命令go test -c -covermode=count -coverpkg ./gopath/src/mvdsp/module/,./gopath/src/mvdsp/extractor/,./gopath/src/mvdsp/mvutil/,./gopath/src/mvdsp/protocol/ -o dsp_server.test
1 -c 表示 生成测试二进制文件
2 -covermode=count 表示 生成的二进制中包含覆盖率计数信息
3 -coverpkg 后面是要统计覆盖率的文件源码目录
4 -o 后面是输出的二进制文件名(默认为 packetname.test)
3 执行命令,生成一个可执行的二进制文件,拷贝到部署目录下
4 启动服务,在启动命令后加参数: -systemTest -test.coverprofile coverage/coverage.cov
1 -systemTest 用来启动前面说过的main test
2 -test.coverprofile 用来指定覆盖率信息写入到哪个文件
三 统计覆盖率
1 执行自动化
2 执行如下命令,生成覆盖率文件coverage.cov
killall -2 packagename.test
3 生成测试报告
go tool cover -html=./coverage/coverage.cov -o /data/reports/coverage.html
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
参考文章:<u>https://studygolang.com/articles/11934</u>
一 Main函数的test文件
package main
// This file is mandatory as otherwise the filebeat.test binary is not generated correctly.
import (
"testing"
"flag"
)
var systemTest *bool
func init() {
systemTest = flag.Bool("systemTest", false, "Set to true when running system tests")
}
// Test started when the test binary is started. Only calls main.
func TestSystem(t *testing.T) {
if *systemTest {
main()
}
}
注意:
1 命名:看一下自己代码的main()函数所在的go文件名称,直接命名为*_test.go文件即可; 比如,代码文件名 main_server.go,可直接命名为main_server_test.go
2 目录:放在与被测文件同目录下
二 编译代码
1 查看main函数,将其中的os.Exit()更改为return (根据实际情况分别为return/return 0/return 255...)
2 原编译命令为go build
此处使用命令go test -c -covermode=count -coverpkg ./gopath/src/mvdsp/module/,./gopath/src/mvdsp/extractor/,./gopath/src/mvdsp/mvutil/,./gopath/src/mvdsp/protocol/ -o dsp_server.test
1 -c 表示 生成测试二进制文件
2 -covermode=count 表示 生成的二进制中包含覆盖率计数信息
3 -coverpkg 后面是要统计覆盖率的文件源码目录
4 -o 后面是输出的二进制文件名(默认为 packetname.test)
3 执行命令,生成一个可执行的二进制文件,拷贝到部署目录下
4 启动服务,在启动命令后加参数: -systemTest -test.coverprofile coverage/coverage.cov
1 -systemTest 用来启动前面说过的main test
2 -test.coverprofile 用来指定覆盖率信息写入到哪个文件
三 统计覆盖率
1 执行自动化
2 执行如下命令,生成覆盖率文件coverage.cov
killall -2 packagename.test
3 生成测试报告
go tool cover -html=./coverage/coverage.cov -o /data/reports/coverage.html