go版本:go版本go1.11.2 linux/amd64
gin 版本(或提交参考):提交 #5acf660
操作系统:Ubuntu 16.04LTS
我正在尝试使用示例应用程序为 gin 服务器生成代码覆盖率报告。示例.go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ep1", getEp1)
r.GET("/ep2", getEp2)
//r.Run()
}
func getEp1(c *gin.Context) {
}
func getEp2(c *gin.Context) {
}
这是我的测试文件:sample_test.go
package main
import (
"fmt"
"testing"
)
func TestRunMain(t *testing.T) {
fmt.Println("TestRunMain ...")
main()
}
生成代码覆盖率的命令:
$ go test -covermode=count -coverpkg ./... -test.coverprofile cover.cov
测试运行主要...
[GIN-debug] [WARNING] 创建一个引擎实例,其中已经附加了 Logger 和 Recovery 中间件。
[GIN 调试] [警告] 在“调试”模式下运行。在生产中切换到“发布”模式。
使用环境:export GIN_MODE=release
使用代码:gin.SetMode(gin.ReleaseMode)
[GIN 调试] GET /ep1 --> _/home/ubuntu/tmp/sample.getEp1(3 个处理程序)
[GIN 调试] GET /ep2 --> _/home/ubuntu/tmp/sample.getEp2(3 个处理程序)
经过
覆盖率:100.0% 的语句在 ./...
好的_/home/ubuntu/tmp/sample 0.013s
这是 cover.cov 文件的内容:
模式:计数
/home/ubuntu/tmp/sample/sample.go:7.13,12.2 3 1
/home/ubuntu/tmp/sample/sample.go:14.30,15.2 0 0
/home/ubuntu/tmp/sample/sample.go:17.30,18.2 0 0
到目前为止一切都很好!但如您所见,我还没有运行服务器。在文件:sample.go 中,当我取消注释行 r.Gin() 时,服务器运行。要退出应用程序,我需要执行 Ctrl+C。在这种情况下,不会生成代码覆盖率报告。我错过了什么?
r.Gin() 在 sample.go 中未注释的命令行输出:
$ go test -covermode=count -coverpkg ./... -test.coverprofile cover.cov
测试运行主要...
[GIN-debug] [WARNING] 创建一个引擎实例,其中已经附加了 Logger 和 Recovery 中间件。
[GIN 调试] [警告] 在“调试”模式下运行。在生产中切换到“发布”模式。
使用环境:export GIN_MODE=release
使用代码:gin.SetMode(gin.ReleaseMode)
[GIN 调试] GET /ep1 --> _/home/ubuntu/tmp/sample.getEp1(3 个处理程序)
[GIN 调试] GET /ep2 --> _/home/ubuntu/tmp/sample.getEp2(3 个处理程序)
[GIN-debug] 环境变量 PORT 未定义。默认使用端口:8080
[GIN-debug] 在 :8080 上监听和服务 HTTP
^Csignal:中断
失败 _/home/ubuntu/tmp/sample 0.711s
cover.go 的内容:
$ 猫封面.cov
模式:计数
谁能告诉我我在这里缺少什么?
拉莫斯之舞
相关分类