首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何度量Golang集成测试覆盖率?

如何度量Golang集成测试覆盖率?
EN

Stack Overflow用户
提问于 2015-02-05 16:27:44
回答 3查看 7K关注 0票数 22

我试图使用go test -cover来度量我正在构建的服务的测试覆盖率。它是一个REST,我正在通过旋转它、发出测试HTTP请求和检查HTTP响应来测试它。这些测试不是服务包的一部分,go tool cover返回0%的测试覆盖率。有办法获得实际的测试覆盖率吗?我希望在给定端点上进行最好的场景测试,至少覆盖特定端点处理程序的代码的30-50%,并添加更多的常见错误测试以进一步改进这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-06 10:52:03

我注意到了-coverpkg指令,它执行我所需要的--测量特定包中的测试覆盖率,即使使用这个包的测试,而不是它的一部分。例如:

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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%的业务逻辑。

我是个新手,所以很可能这不是通过集成测试来度量测试覆盖率的最佳方法。

票数 17
EN

Stack Overflow用户

发布于 2018-11-08 21:01:12

您可以以创建覆盖率html页面的方式运行go测试。就像这样:

代码语言:javascript
复制
go test -v -coverprofile cover.out ./...
go tool cover -html=cover.out -o cover.html
open cover.html
票数 2
EN

Stack Overflow用户

发布于 2015-02-05 17:56:54

据我所知,如果您想要覆盖范围,您需要运行go test -cover

但是,添加一个可以通过的标志是很容易的,它将启用这些额外的测试,因此您可以将它们作为测试套件的一部分,但不要正常运行它们。

因此,在whatever_test.go中添加一个命令行标志

代码语言:javascript
复制
var integrationTest = flag.Bool("integration-test", false, "Run the integration tests")

然后在每次测试中做这样的事情

代码语言:javascript
复制
func TestSomething(t *testing.T){
    if !*integrationTest {
        t.Skip("Not running integration test")
    }
    // Do some integration testing
}

然后运行集成测试。

代码语言:javascript
复制
go run -cover -integration-test
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28349085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档