去测试coverprofile找不到包

Ger*_*ens 4 go

当我尝试以下

go test -coverprofile=coverage.out
Run Code Online (Sandbox Code Playgroud)

我得到这个coverage.out:

mode: set
_/Users/gert/Desktop/httx/auth.go:10.66,11.54 1 0
_/Users/gert/Desktop/httx/auth.go:11.54,13.89 2 0
_/Users/gert/Desktop/httx/auth.go:17.3,17.11 1 0
_/Users/gert/Desktop/httx/auth.go:13.89,16.4 2 0
_/Users/gert/Desktop/httx/auth.go:22.42,25.2 2 0
...
Run Code Online (Sandbox Code Playgroud)

但是当我这么做的时候

go tool cover -func=coverage.out
Run Code Online (Sandbox Code Playgroud)

coverage.out似乎没有正确格式化?

cover: can't find "auth.go": cannot find package "_/Users/gert/Desktop/httx/" in any of:                                     
        /usr/local/Cellar/go/1.7.1/libexec/src/_/Users/gert/Desktop/httx (from $GOROOT)                                      
        /Users/gert/go/src/_/Users/gert/Desktop/httx (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)

编辑:注意go test -cover工作.

PASS                                                                                                                         
coverage: 29.7% of statements                                                                                                
ok      _/Users/gert/Desktop/httx       0.015s
Run Code Online (Sandbox Code Playgroud)

jcb*_*lkr 6

你的包/Users/gert/Desktop/httx/是你的外面$GOPATH/Users/gert/go.将httx包裹移到您的下方$GOPATH,它会正常工作.您可以将其移动到/Users/gert/go/src/httx或可能类似/Users/gert/go/src/github.com/your-github-name/httx(假设您使用GitHub).

  • @GertCuykens我只是在这里推测,但我会说这是因为当你运行`go test`它知道它正在测试的代码但是当你试图运行`go tool cover`之后它必须关闭包中的名字`coverage.out`并且找不到它们. (2认同)
  • 好的,谢谢你的回答是正确的,但我将在 github 上创建一个功能请求,我认为这是因为对我来说,为了封面工具而被迫将你的 src 放在 gopath 中是违反直觉的 (2认同)