Go 单元测试不包括本地导入的包

Go 单元测试不包括本地导入的包,go,microservices,go-gin,go-toolchain,Go,Microservices,Go Gin,Go Toolchain,我是刚来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

我是刚来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文件,导入“calculator”,这是一个本地包。当我跑的时候

go test -cover
它只提供main的覆盖范围,而不提供main导入的包“calculator”。我知道我可以在计算器中编写一个测试,这就可以了,但是有没有办法从main获取本地导入包的覆盖率呢


更大的上下文—我之所以要这样做,是因为我有一个使用gin框架编写的go微服务,我想将其作为一个服务进行旋转,并进行http调用,进一步了解覆盖率的情况(如组件测试)。我可以通过编写一个启动服务的主测试go文件来轻松启动它,但我没有得到导入包的覆盖范围。

最终在这里找到了响应。看起来go有一个可以使用的测试二进制文件

Go中没有“本地导入的软件包”。有导入的包和未导入的包。@Volker在上面的示例中,您将计算器称为什么?@user1707312:
calculator
是一个与其他任何包一样的包。路径中没有主机名这一事实只会阻止您直接在其上使用
go-get
。同意!这就是我所说的“本地”导入的意思(因为你必须在使用前导入它们)。拥有这样的软件包有一个真正的用例。并不是每个你想从应用程序中单独托管的软件包,因为它在应用程序之外可能毫无意义。在这种情况下,单元测试不计算这些包的覆盖率(如果在它之外运行)。下面的链接有答案