我正在尝试使用go test -cover
来衡量我正在构建的服务的测试覆盖范围。它是一个REST API,我正在通过旋转它来测试它,测试HTTP请求并检查HTTP响应。这些测试不是服务包的一部分,并且go tool cover
返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我期望在给定端点上进行最佳情况测试,以覆盖特定端点处理程序的至少30-50%的代码,并通过添加更多常见错误测试来进一步改进此问题。如何测量Golang集成测试覆盖率?
回答
我指出-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很新,所以很有可能这不是通过集成测试来衡量测试覆盖率的最佳方式。
据我所知,如果你想覆盖你需要运行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
谢谢您的评论,但这不完全是我所需要的。问题在于覆盖的百分比不包括项目其他包中的代码。我会更新我的问题以反映并更清楚。 – 2015-02-06 10:40:40
@antonevangelatov我明白你的意思了!我会留下这个答案,以防万一有人发现它有用,并且我在你的答案中注明'-coverpkg',谢谢! – 2015-02-06 13:57:16
- 1. 如何测量测试覆盖率
- 2. 测量集成测试覆盖率与Maven
- 3. 如何将monkeyrunner集成测试与emma覆盖测试集成?
- 4. 集成测试vs测试覆盖
- 5. 如何查看Sonarqube中的集成测试覆盖率6.2
- 6. 如何测量Golang中的代码覆盖率?
- 7. QUnit测试覆盖率
- 8. 测试覆盖率.NetCore
- 9. BDD和测试覆盖率
- 10. 我如何测试代码覆盖率?
- 11. 如何测量TCL代码覆盖率?
- 12. Jenkins和Jacoco集成测试覆盖
- 13. OSGI集成测试和代码覆盖
- 14. 声纳集成测试覆盖
- 15. 覆盖action_controller.allow_forgery_protection特定的集成测试
- 16. 在集成测试中覆盖bean
- 17. 覆盖集成测试IntelliJ在Wildfly
- 18. 在Sonar中,如何通过测试查看测试覆盖率?
- 19. Emma覆盖率报告和集成测试
- 20. 在tomcat上部署webapp的集成测试覆盖率?
- 21. 如何在golang中使用子进程测试时生成单元测试覆盖率?
- 22. 条件覆盖率与决策覆盖率测试
- 23. SonarQube 4.1 + Teamcity - 单元测试覆盖率0.0%单元测试成功率100.0%
- 24. 在Java测试用例中测量输入覆盖率
- 25. 使用aqtime测量单元测试的代码覆盖率
- 26. 通过API测试测量C#.net代码覆盖率
- 27. 用黑匣子测试测量代码覆盖率
- 28. VS 2017年的测试覆盖率似乎测量测试代码只
- 29. Behat的行为测试覆盖率
- 30. APEX测试类0%代码覆盖率
太棒了!我只是将这个[相关golang-nuts线程](https://groups.google.com/forum/#!topic/golang-nuts/fnDBPPUDdQ4)链接起来。 – Simon 2015-02-06 15:56:58
谢谢,西蒙。这确实是我正在寻找的! – 2015-02-09 09:31:41