【发布时间】:2018-06-16 20:08:01
【问题描述】:
我是 golang 的新手,想了解如何让这个场景发挥作用?
这是我的结构 GOPATH 设置为 /Users/xyz/project
/Users/xyz/project/src/main.go // import calculator and call SUM with two integeres
/Users/xyz/project/src/main_test.go // test function
/Users/xyz/project/src/calculator/sum.go // SUM function (add two integers)
我有一个导入“计算器”的主要 go 文件,它是一个本地包。当我跑步时
go test -cover
它只给出了 main 的覆盖范围,但不包括 main 导入的包“calculator”。我知道我可以在计算器内编写一个测试,这样可以解决问题,但是有没有办法从 main 获取本地导入包的覆盖范围?
更大的上下文 - 我想这样做的原因是因为我有一个使用 gin 框架用 go 编写的微服务,我想将它作为服务启动并进行 http 调用,并进一步查看覆盖范围的样子(比如组件测试)。我可以通过编写一个启动服务的 main_test go 文件轻松启动它,但我没有得到导入包的覆盖范围。
【问题讨论】:
-
Go 中没有“本地导入的包”。有导入的包和没有导入的包。
-
@Volker 在上面的例子中你叫什么计算器?
-
@user1707312:
calculator是一个包,就像其他包一样。它在路径中没有主机名这一事实只会阻止您直接在其上使用go get。 -
同意!这就是我所说的“本地”导入的意思(因为你必须在使用前导入它们)。拥有这样的包有一个真正的用例。并非您希望将每个包都与应用程序分开托管,因为它在应用程序之外可能毫无意义。在这种情况下,如果在这些包之外运行,单元测试不会计算这些包的覆盖率。下面的链接有答案
标签: go microservices go-gin go-toolchain