相关疑难解决方法(0)

正确的包命名用于使用Go语言进行测试

我在Go中看到了几种不同的测试包命名策略,并想知道每种方法的优缺点以及我应该使用哪种方法.

策略1:

文件名:github.com/user/myfunc.go

package myfunc
Run Code Online (Sandbox Code Playgroud)

测试文件名:github.com/user/myfunc_test.go

package myfunc
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅bzip2.

策略2:

文件名:github.com/user/myfunc.go

package myfunc
Run Code Online (Sandbox Code Playgroud)

测试文件名:github.com/user/myfunc_test.go

package myfunc_test

import (
    "github.com/user/myfunc"
)
Run Code Online (Sandbox Code Playgroud)

有关示例,请参见电线.

策略3:

文件名:github.com/user/myfunc.go

package myfunc
Run Code Online (Sandbox Code Playgroud)

测试文件名:github.com/user/myfunc_test.go

package myfunc_test

import (
    . "myfunc"
)
Run Code Online (Sandbox Code Playgroud)

请参阅字符串以获取示例.

Go标准库似乎使用了策略1和2的混合.我应该使用哪三个?这是一个痛苦附加package *_test到我的测试包,因为它意味着我无法测试我的包私有方法,但也许有一个我不知道的隐藏的优势?

unit-testing go

85
推荐指数
3
解决办法
2万
查看次数

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

我有一个这样的项目:

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)

go

7
推荐指数
1
解决办法
962
查看次数

标签 统计

go ×2

unit-testing ×1