Go Coverage 不包括其他包中的函数

Mat*_*sen 7 go

我有一个这样的项目:

app/
    api/
        foo.go
        test_foo.go
src/
    db/
        bar.go
Run Code Online (Sandbox Code Playgroud)

在 中foo.go,对 中的函数进行调用bar.go。但是,在运行覆盖率报告时,它显示 bar.go 的 0 行被覆盖。

有没有办法让覆盖范围包括对其他包的函数调用?

就我而言,我并不想为单独的测试dbapi,因为通过所有的呼叫db将总是通过api,这将是多余写两个测试。

我正在运行这样的覆盖范围:

go clean -testcache
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
Run Code Online (Sandbox Code Playgroud)

Iai*_*can 13

您需要包含该coverpkg标志,以便:

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

将计算您所有包裹的承保范围。

https://golang.org/cmd/go/#hdr-Testing_flags