Bun*_*nyk 5 unit-testing go

我们有以下项目结构:

??? Makefile
??? ...
??? src
?   ??? app
?   ?   ??? main.go
?   ?   ??? models
?   ?       ??? ...
?   ?       ??? dao.go
?   ?   ??? ...
?   ?   ??? controllers
?   ?       ??? ...
?   ?       ??? pingController.go
?   ??? test
?       ??? all_test.go
?       ??? ...
?       ??? controllers_test.go
??? vendor
    ??? src
        ??? github.com
        ??? golang.org
        ??? gopkg.in
Run Code Online (Sandbox Code Playgroud)

我想通过src / test中的测试来衡量src / app中软件包的覆盖率。当前,通过运行自定义脚本生成覆盖率配置文件,该脚本运行应用程序中每个程序包的覆盖率,然后将所有覆盖率配置文件合并到一个文件中。最近,我听说在go1.10中,我们可以为多个软件包生成覆盖率。

所以我尝试用oneliner替换该脚本,并尝试运行

GOPATH=${PROJECT_DIR}:${PROJECT_DIR}/vendor go test -covermode count -coverprofile cover.out -coverpkg all ./src/test/...
Run Code Online (Sandbox Code Playgroud)

它给了我“可以测试0.475秒的覆盖范围:全部语句的0.0%”

当我做

cd src/test/
GOPATH=${PROJECT_DIR}:${PROJECT_DIR}/vendor go test -covermode count -coverprofile cover.out -coverpkg all
Run Code Online (Sandbox Code Playgroud)

日志显示规范已经运行并且测试成功,但是我仍然有“ coverage:总共0.0%的语句”和空的cover.out。

在测试中正确计算应用程序包覆盖率时,我缺少什么?