一、go test方式(已存在xxxx.go代码文件, 实现xxxx_test.go测试文件,执行如下go test命令即可)
go test -gcflags='-N -l' -covermode=count -coverprofile=${DEPLOY}coverage.out -coverpkg ./source/... ./source/...
-gcflags='-N -l' 禁止编译器优化及内联, 这样能保证代码逻辑会被执行到
-covermode=count 表示生成的二进制中包含要统计覆盖率的计数信息
-coverprofile 要产出的覆盖率文件
-coverpkg 后面是要统计覆盖率的文件源码
代码编译结束后,会生成coverage.out文件
二、编译代码,编译出二进制文件执行(运行系统测试,需要使用插桩产物)
mian_test.go文件中设置SystemTest标识,要运行系统测试,必须在执行测试二进制文件的时候带 -SystemTest 参数
生成插桩后的二进制文件:
go test -c -o (BIN)/(BIN)/(EXENAME).test -covermode=count -coverpkg ./source/... ./source
-c 表示 生成测试二进制文件
-o 后面是输出的二进制文件名
-covermode=count 表示生成的二进制中包含要统计覆盖率的计数信息
-coverpkg 后面是要统计覆盖率的文件源码
xxxx.test即为插桩产物,该文件在每一行代码后写入一个唯一的计数器,并检查在执行该二进制文件后调用此计数器的次数
以打桩二进制文件启动服务:
nohup ./bin/$FILENAME -SystemTest -test.coverprofile ../../total_coverage.cov -log_dir=./log -v=0>./log/panic.log 2>&1 &
执行测试case:
执行完测试case之后,会生成total_coverage.cov文件
将以上单元测试生成的文件coverage.out,合并至系统测试生成的文件total_coverage.cov中,执行go tool cover -html=total_coverage.cov -o total_coverage.html
文章介绍了如何使用gotest进行代码测试,包括设置gcflags以禁止编译器优化,使用covermode计算覆盖率,并生成coverage.out文件。接着,讲述了如何编译代码为二进制文件,特别强调了SystemTest标识用于系统测试,并生成插桩后的二进制文件。通过nohup启动服务执行测试,最终合并单元测试和系统测试的覆盖率文件,生成HTML报告供阅读。

被折叠的 条评论
为什么被折叠?



