我正在嘗試使用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