goc 是专为 Go 语言打造的一个综合覆盖率收集系统,尤其适合复杂的测试场景,比如系统测试时的代码覆盖率收集以及精准测试。
最新版本在该页面下载 Github Releases。
goc 同时支持 GOPATH
工程和 Go Modules
工程,且 Go 版本要求 Go 1.11+。如果想参与 goc 的开发,你必须使用 Go 1.13+。
goc 有多种使用场景。
goc 可以实时收集长时运行的 golang 服务覆盖率。收集步骤只需要下面三步:
goc server
命令启动一个服务注册中心:
? simple-go-server git:(master) ? goc server
goc build
命令编译目标服务,然后启动插过桩的二进制。下面以 simple-go-server 工程为例:
? simple-go-server git:(master) ? goc build .
... // omit logs
? simple-go-server git:(master) ? ./simple-go-server
goc profile
命令收集刚启动的 simple server 的代码覆盖率:
? simple-go-server git:(master) ? goc profile
mode: atomic
enricofoltran/simple-go-server/main.go:30.13,48.33 13 1
enricofoltran/simple-go-server/main.go:48.33,50.3 1 0
enricofoltran/simple-go-server/main.go:52.2,65.12 5 1
enricofoltran/simple-go-server/main.go:65.12,74.46 7 1
enricofoltran/simple-go-server/main.go:74.46,76.4 1 0
...
我们提供了一个 vscode 插件 - Goc Coverage。该插件可以在运行时高亮覆盖过的代码。
goc 命令加上 --debug
会打印详细的日志。我们建议在提交 bug 时附上详细日志。
默认情况下,插桩过的服务会监听在一个随机的端口,注册中心会通过这个端口与服务通信。然而,对于 docker 和 kubernetes 容器化运行环境,对外暴露端口需在容器启动前指定。针对这种场景,你可以在 goc build
或 goc install
时使用 --agentport
来指定插桩过的服务监听在固定的端口。
如果注册中心不在本机,你可以在 goc build
或 goc install
编译目标服务时使用 --center
指定远端注册中心地址。
目前覆盖率数据存储在插过桩的服务测,如果某个服务中途需要重启,那么其覆盖率数据在重启后会丢失。针对这个场景,你可以通过以下步骤解决:
goc profile -o a.cov
命令收集一次覆盖率goc profile -o b.cov
命令再收集一次覆盖率goc merge a.cov b.cov -o merge.cov
命令合并两次的覆盖率我们欢迎各种形式的贡献,包括提交 bug、提新需求、优化文档和改进 UI 等等。
感谢所有的贡献者!!
Goc is released under the Apache 2.0 license. See LICENSE.txt
我们到底什么关系hcv8jop0ns2r.cn | 什么情况会胎停hcv9jop1ns5r.cn | 腕管综合征吃什么药hcv9jop3ns5r.cn | 什么水果止咳weuuu.com | ck是什么牌子的包包96micro.com |
画像是什么意思hcv7jop4ns6r.cn | 助产专业是干什么的hcv9jop6ns9r.cn | 屁股眼痒是什么原因hcv8jop1ns3r.cn | 1968属什么生肖hcv7jop9ns3r.cn | 钟点房什么意思hcv7jop6ns4r.cn |
梦见刮胡子是什么意思chuanglingweilai.com | coser什么意思hcv9jop7ns5r.cn | 国资委主任是什么级别hcv8jop9ns0r.cn | 血糖高应该吃什么水果hcv8jop4ns3r.cn | 荨麻疹吃什么药最管用hcv8jop1ns9r.cn |
盘尼西林是什么药hcv9jop6ns2r.cn | 头疼恶心是什么原因hcv9jop2ns0r.cn | 脑白质变性什么意思hcv7jop4ns6r.cn | 丙辰是什么时辰hcv8jop1ns8r.cn | 微商是什么意思hcv8jop0ns5r.cn |