亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何衡量 Golang 集成測試覆蓋率?

如何衡量 Golang 集成測試覆蓋率?

Go
慕的地6264312 2021-09-13 15:34:21
我正在嘗試使用go test -cover來衡量我正在構建的服務的測試覆蓋率。它是一個 REST API,我正在通過旋轉它來測試它,發出測試 HTTP 請求并查看 HTTP 響應。這些測試不是服務包的一部分,go tool cover返回 0% 的測試覆蓋率。有沒有辦法獲得實際的測試覆蓋率?我希望在給定端點上進行的最佳場景測試至少可以覆蓋 30-50% 的特定端點處理程序代碼,并通過添加更多常見錯誤測試來進一步改進這一點。
查看完整描述

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 很陌生,所以這很可能不是通過集成測試來衡量測試覆蓋率的最佳方式。


查看完整回答
反對 回復 2021-09-13
?
森林海

TA貢獻2011條經驗 獲得超2個贊

您可以以創建覆蓋 html 頁面的方式運行 go test。像這樣:


go test -v -coverprofile cover.out ./...

go tool cover -html=cover.out -o cover.html

open cover.html


查看完整回答
反對 回復 2021-09-13
?
慕標琳琳

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


查看完整回答
反對 回復 2021-09-13
  • 3 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號