3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
我被指向-coverpkg指令,它滿足我的需要——測(cè)量特定包中的測(cè)試覆蓋率,即使測(cè)試使用這個(gè)包而不是它的一部分。例如:
$ 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
在上面的示例中,我進(jìn)行了測(cè)試,main_test.go其中package main正在使用package mypackage. 我最感興趣的是 的覆蓋范圍,package mypackage因?yàn)樗?xiàng)目中 99% 的業(yè)務(wù)邏輯。
我對(duì) Go 很陌生,所以這很可能不是通過(guò)集成測(cè)試來(lái)衡量測(cè)試覆蓋率的最佳方式。

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以以創(chuàng)建覆蓋 html 頁(yè)面的方式運(yùn)行 go test。像這樣:
go test -v -coverprofile cover.out ./...
go tool cover -html=cover.out -o cover.html
open cover.html

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
據(jù)我所知,如果你想要覆蓋,你需要運(yùn)行g(shù)o test -cover.
但是,添加一個(gè)標(biāo)志很容易,您可以傳入該標(biāo)志以啟用這些額外的測(cè)試,因此您可以將它們作為測(cè)試套件的一部分,但不要正常運(yùn)行它們。
所以在你的 whatever_test.go
var integrationTest = flag.Bool("integration-test", false, "Run the integration tests")
然后在每個(gè)測(cè)試中做這樣的事情
func TestSomething(t *testing.T){
if !*integrationTest {
t.Skip("Not running integration test")
}
// Do some integration testing
}
然后運(yùn)行集成測(cè)試
go run -cover -integration-test
- 3 回答
- 0 關(guān)注
- 250 瀏覽
添加回答
舉報(bào)