如何覆寫 Golang 單元測試中的程式碼?方法:使用內建的 cover 工具(go test -cover)。利用第三方函式庫,如 testify 的 assert 函數。實戰範例:使用 cover 工具和 testify 斷言函數,可測量 Factorial 函數的程式碼覆蓋率,產生 HTML 報告展示詳細資訊。
如何覆寫 Golang 單元測試中的程式碼?
介紹
程式碼覆蓋率是衡量測試套件涵蓋目標程式碼份額的指標。在單元測試中,高程式碼覆蓋率表示已測試了大部分業務邏輯,提高了測試的可靠性。
方法
1. 使用程式碼覆蓋率工具
Go 語言提供了cover
工具來測量代碼覆蓋率。要使用它,除了正常的go test
命令外,還需要添加-cover
標誌:
go test -cover
2. 利用第三方函式庫
還有許多第三方函式庫可以提供更詳細的程式碼覆蓋率報告。例如,可以使用testify
中的assert
函數:
import ( "testing" "github.com/stretchr/testify/assert" ) func TestSomething(t *testing.T) { assert.Equal(t, 1, something()) // 覆盖了 something() 函数的 return 语句 }
實戰案例
下面是一個簡單的Go 語言函數和相關的單元測試:
// main.go package main func Factorial(n int) int { if n == 0 { return 1 } return n * Factorial(n-1) } func main() { println(Factorial(5)) // 输出:120 }
// factorial_test.go package main import "testing" func TestFactorial(t *testing.T) { // 记录 Factorial 函数的覆盖率 t.Run("Cover", func(t *testing.T) { cases := []int{0, 1, 5, 10} for _, n := range cases { Factorial(n) } }) }
運行測試:
go test -cover -coverprofile=cover.out
然後,使用go tool cover -html=cover.out
產生HTML 報告,該報告顯示了覆蓋率詳細資訊。
以上是如何覆蓋 Golang 單元測試中的程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!