如何用所有测试正确覆盖所有的golang包?

ifmq2ha2  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(125)

假设在包pkg/somepkg1下定义了一些代码。而且这个包里有一些测试,还有一些测试在tests/integration包里。
如果我打电话

go test -cover -coverprofile=cover.out ./...

字符串
我已经运行了所有的测试(包括integration),但是在cover.out中没有覆盖信息-只有somepkg1的覆盖!例如78%
如果我打电话

go test -cover -coverpkg=./pkg/somepackage1 -coverprofile=cover.out ./...


我已经得到了我想要的东西-我看到所有的代码覆盖率都是一些包,无论是来自它的包还是来自integration。例如85%。
因此,如果要检查./pkg中的所有软件包,我为所有软件包调用相同的代码,然后将答案合并到一个批次中。这需要很长的时间,对CI不利
对我来说一点也不一致。我知道童话单元测试比覆盖其他模块和集成测试更好,但它使用起来并不友好。
有没有办法覆盖所有的测试,而不需要对每个包调用这样的代码片段?

smdnsysy

smdnsysy1#

用于不加区别地测试所有包:

go test ./...

字符串
对于所有软件包,您可以添加覆盖范围为:

go test --cover ./... -coverprofile=cover.out


在特定包中进行测试将是:

go test --cover -coverpkg=./pkg ./pkg -coverprofile=cover.out

bvjxkvbb

bvjxkvbb2#

解决了!

go test -cover -coverpkg=./pkg/... -coverprofile=cover.out ./...

字符串
在这种情况下-它做正是我想要的,它不一样

go test -cover -coverprofile=cover.out ./...


如果您想测试一组软件包,可以使用

go test -cover -coverpkg=./pkg/pkg1,./pkg/pkg2 -coverprofile=cover.out ./...


有逗号没有空格

相关问题