我试图使用go test -cover来度量我正在构建的服务的测试覆盖率。它是一个REST,我正在通过旋转它、发出测试HTTP请求和检查HTTP响应来测试它。这些测试不是服务包的一部分,go tool cover返回0%的测试覆盖率。有办法获得实际的测试覆盖率吗?我希望在给定端点上进行最好的场景测试,至少覆盖特定端点处理程序的代码的30-50%,并添加更多的常见错误测试以进一步改进这一点。
发布于 2015-02-06 10:52:03
我注意到了-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%的业务逻辑。
我是个新手,所以很可能这不是通过集成测试来度量测试覆盖率的最佳方法。
发布于 2018-11-08 21:01:12
您可以以创建覆盖率html页面的方式运行go测试。就像这样:
go test -v -coverprofile cover.out ./...
go tool cover -html=cover.out -o cover.html
open cover.html发布于 2015-02-05 17:56:54
据我所知,如果您想要覆盖范围,您需要运行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-testhttps://stackoverflow.com/questions/28349085
复制相似问题