首页 > 解决方案 > 去测试覆盖,在不同的包上

问题描述

我一直在写一个休息服务我有以下结构

/controllers
/domain/dao
/services

在为每个单独的包编写了大量测试并为每个阶段使用模拟之后,我认为只针对控制器编写测试并模拟数据库会更快,因此我知道 /domain/dao 层正在被调用。

我现在的问题是,当我运行代码覆盖率时,即使我知道正在调用代码,我也没有得到 /service 或 /domain/dao 的覆盖率

关于如何让我的代码覆盖所有文件的任何想法?

标签: gotestingcode-coverage

解决方案


你可以试试flag-coverpkg

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

要检查文件夹 /services 中的所有包,您可以尝试:

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

只是一个旁注 - 我通常会添加-covermode=count

go test --cover -covermode=count -coverpkg=./services/...  ./... -coverprofile=cover.out

然后,您可以使用 go 工具将其视为 html:

go tool cover -html=cover.out

推荐阅读