1. checkout被测branch的代码到本地
2. 在对应项目的main文件路径下,添加main_test文件
package main
import (
"flag"
"os"
"os/signal"
"syscall"
"testing"
"time"
)
func TestMain(m *testing.M){
go func() {
main()
}()
time.Sleep(time.Second)
if !flag.Parsed(){
flag.Parse()
}
sigs := make(chan os.Signal)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGKILL, syscall.SIGABRT, syscall.SIGSEGV, syscall.SIGTERM)
<-sigs
os.Exit(m.Run())
}
3. 重新编译项目的二进制文件(可以根据待统计覆盖率的文件路径进行选择)
GOOS=linux GOARCH=amd64 go test -c -coverpkg=./../../...
4. 将对应的二进制文件上传对应的bin目录
5. 修改对应的monit服务
比如这次改动是bybit_api:
原始的monit的启动脚本:
/data/monit_daemon/bin/monit_start_daemon.sh /data/web/bybit_api/bybit_api.bin
改动成:
/data/monit_daemon/bin/monit_start_daemon.sh /data/web/bybit_api/bybit_api.bin -test.coverprofile /home/XXX/coverage.cov
6. 如果要生成对应的覆盖率报告数据
kill掉对应的服务,则生成报告文件
7. 将生成的数据转化成html
go tool cover -html=coverage.cov -o /home/XXX/coverage.html
8. 如果要看整体的覆盖率结果,可以直接用此方法输出
go tool cover -func=coverage.cov -o coverage.txt