Golang测试覆盖范围与黑盒_test覆盖率

时间:2018-05-16 03:36:17

标签: testing go

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

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的代码覆盖率。

感谢您的时间。

1 个答案:

答案 0 :(得分:-1)

经过多次键盘糖化之后,我发现它与我将项目目录轻松链接到$GOPATH/src/这一事实有关。

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