3 回答
TA贡献1853条经验 获得超18个赞
我被指向-coverpkg指令,它满足我的需要——测量特定包中的测试覆盖率,即使测试使用这个包而不是它的一部分。例如:
$ go test -cover -coverpkg mypackage ./src/api/...
ok /api 0.190s coverage: 50.8% of statements in mypackage
ok /api/mypackage 0.022s coverage: 0.7% of statements in mypackage
相比
$ go test -cover ./src/api/...
ok /api 0.191s coverage: 71.0% of statements
ok /api/mypackage 0.023s coverage: 0.7% of statements
在上面的示例中,我进行了测试,main_test.go其中package main正在使用package mypackage. 我最感兴趣的是 的覆盖范围,package mypackage因为它包含项目中 99% 的业务逻辑。
我对 Go 很陌生,所以这很可能不是通过集成测试来衡量测试覆盖率的最佳方式。
TA贡献2011条经验 获得超2个赞
您可以以创建覆盖 html 页面的方式运行 go test。像这样:
go test -v -coverprofile cover.out ./...
go tool cover -html=cover.out -o cover.html
open cover.html
TA贡献1830条经验 获得超9个赞
据我所知,如果你想要覆盖,你需要运行go test -cover.
但是,添加一个标志很容易,您可以传入该标志以启用这些额外的测试,因此您可以将它们作为测试套件的一部分,但不要正常运行它们。
所以在你的 whatever_test.go
var integrationTest = flag.Bool("integration-test", false, "Run the integration tests")
然后在每个测试中做这样的事情
func TestSomething(t *testing.T){
if !*integrationTest {
t.Skip("Not running integration test")
}
// Do some integration testing
}
然后运行集成测试
go run -cover -integration-test
- 3 回答
- 0 关注
- 221 浏览
添加回答
举报