透過使用 Go 語言的內建測試框架,開發者可以輕鬆地為他們的程式碼編寫和執行測試。測試檔案以 _test.go 結尾,並包含 Test 開頭的測試函數,其中 *testing.T 參數表示測試實例。錯誤訊息使用 t.Error() 記錄。可以透過執行 go test 指令來執行測試。子測試允許將測試函數分解成更小的部分,並透過 t.Run() 建立。實戰案例包括針對 utils 套件中 IsStringPalindrome() 函數編寫的測試文件,該文件使用一系列輸入字串和預期輸出來測試函數的正確性。
Go 語言提供了強大的內建測試框架,讓開發者輕鬆地為其程式碼編寫和執行測試。以下將介紹如何使用 Go 測試套件對你的程式進行測試。
在 Go 中,測試檔案以 _test.go 結尾,並放在與要測試的套件所在的目錄中。測試檔案包含一個或多個測試函數,它們以 Test
開頭,後面跟著要測試的功能。
以下是一個範例測試函數:
import "testing" func TestAdd(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }
*testing.T
參數表示測試實例。錯誤訊息使用 t.Error()
記錄。
可以透過執行以下命令來執行測試:
go test
如果測試成功,將顯示諸如 "PASS" 之類的訊息。如果出現錯誤,將顯示錯誤訊息。
子測試允許將一個測試函數分解成更小的部分。這有助於組織測試程式碼並提高可讀性。
以下是如何寫子測試:
func TestAdd(t *testing.T) { t.Run("PositiveNumbers", func(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }) t.Run("NegativeNumbers", func(t *testing.T) { if Add(-1, -2) != -3 { t.Error("Add(-1, -2) returned an incorrect result") } }) }
#假設我們有一個名為utils
的包,裡麵包含一個 IsStringPalindrome()
函數,用於檢查一個字串是否是回文字串。
下面是如何寫一個測試檔案來測試這個函數:
package utils_test import ( "testing" "utils" ) func TestIsStringPalindrome(t *testing.T) { tests := []struct { input string expected bool }{ {"", true}, {"a", true}, {"bb", true}, {"racecar", true}, {"level", true}, {"hello", false}, {"world", false}, } for _, test := range tests { t.Run(test.input, func(t *testing.T) { if got := utils.IsStringPalindrome(test.input); got != test.expected { t.Errorf("IsStringPalindrome(%s) = %t; want %t", test.input, got, test.expected) } }) } }
在這個測試檔案中:
tests
陣列定義了一系列輸入字串和預期的輸出。 for
循環遍歷 tests
數組,並使用 t.Run()
建立子測試。 utils.IsStringPalindrome()
函數並將其結果與預期結果進行比較。如果結果不一致,它使用 t.Errorf()
記錄錯誤。 以上是如何在 Go 語言中測試套件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!