Nat*_*per 5 unit-testing code-coverage go
我的测试与我的代码不在同一个包中.我发现用一些测试文件来组织一个代码库是一种不那么混乱的方式,我已经读过,为了限制测试通过软件包的公共api进行交互,这是一个好主意.
所以它看起来像这样:
api_client:
Client.go
ArtistService.go
...
api_client_tests
ArtistService.Events_test.go
ArtistService.Info_test.go
UtilityFunction.go
...
Run Code Online (Sandbox Code Playgroud)
我可以输入go test bandsintown-api/api_client_tests -cover
并查看0.181s coverage: 100.0% of statements.但是,这其实只是覆盖在我的UtilityFunction.go(正如我所说的,当我跑go test bandsintown-api/api_client_tests -cover=cover.out和
go tool cover -html=cover.out).
有没有办法获得api_client正在测试的实际包的覆盖范围,而不是将它们全部放入同一个包中?
正如评论中提到的,您可以运行
go test -cover -coverpkg "api_client" "api_client_tests"
进行覆盖测试。
但是将代码文件从测试文件拆分到另一个目录并不是Go的方法。
我想您想进行一次黑盒测试(包私有的东西在外部都无法访问,即使对于测试也是如此)。
为此,可以在另一个程序包中进行测试(不移动文件)。例:
api_client.go
package api_client
// will not be accessible outside of the package
var privateVar = 10
func Method() {
}
Run Code Online (Sandbox Code Playgroud)
api_client_test.go
package api_client_tests
import "testing"
func TestClient(t *testing.T) {
Method()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |