測試主包函數
在 Go 測試領域,嘗試存取主包中定義的函數時可能會遇到挑戰測試文件。這是由於 Go 中包固有的隔離性所造成的。
考慮以下常見問題:
// main.go package main func foo() string { return "Foo" }
// main_test.go package main import "testing" func TestFoo(t *testing.T) { t.Error(foo()) // Undefined: foo }
嘗試從main_test.go 中的主套件測試foo()將導致錯誤,因為子包中無法存取foo() 函數。
要解決此問題,一種方法是為您要測試的功能建立一個單獨的套件。例如:
// util.go package util func Foo() string { return "Foo" }
// main.go package main import ( "fmt" "log" "util" ) func main() { fmt.Println(util.Foo()) }
// util_test.go package util_test import ( "testing" "util" ) func TestFoo(t *testing.T) { t.Error(util.Foo()) // Now accessible }
以這種方式建立程式碼,您可以將測試功能與主套件隔離。
但是,如果您特別需要直接在主套件中定義的測試函數,您必須記住同時對所有檔案執行測試。 go test 指令可讓您指定多個檔案:
go test *.go
此外,請確保您的測試函數在 _test.go 檔案中正確命名,遵守 TestXXX 命名約定並傳遞指向測試的指標。 T 作為參數。
以上是如何在Go中測試主包中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!