我的问题很简单,但是答案仍然难以捉摸。假设我有一个包裹

package mypackage

func DoTheThing() int {
  return 5
}

现在假设我在mypackage_test包中使用了一个测试
package mypackage_test

import "testing"
import . "mypackage"

func TestDoTheThing(t *testing.T) {
    if DoTheThing() != 5 {
        t.Error("there was a problem")
    }
}

现在,我想知道mypackage包的代码覆盖率。
$ go test -cover
PASS
coverage: 0.0% of statements
ok      /my/path/mypackage 0.002s

应该是100%。我也尝试过
$ go test -v -cover -coverpkg ./... ./...
=== RUN   TestDoTheThing
--- PASS: TestDoTheThing (0.00s)
PASS
coverage: 0.0% of statements in ./...
ok      /my/path/mypackage 0.002s  coverage: 0.0% of statements in ./...

对我来说,将测试包含在mypackage中是不可能的,因此我需要知道此设置中mypackage的代码覆盖率。

谢谢你的时间。

最佳答案

经过大量键盘混搭后,我发现这与我将项目目录simlink到$GOPATH/src/有关。

将项目复制到$GOPATH/src/mypackage并正确运行go test -cover将返回100%的覆盖率。

10-08 01:18