從非測試檔案呼叫測試函數
在 Go 中,測試依賴於特定的約定和方法。這些約定之一是測試應該分成自己的測試文件,並且必須以「_test.go」後綴結尾。
可以從非測試檔案呼叫測試函數嗎?
簡短回答:不。
與您的問題相反,測試函數不能直接從非測試 Go 檔案呼叫。這種分離確保了測試與被測程式碼保持不同且獨立。
Go 中的測試模式
Go 主要採用兩種類型的單元測試:
範例
考慮以下帶有匯出的「Sum」的「範例」套件函數和未匯出的「add」函數:
package example func Sum(nums ...int) int { sum := 0 for _, num := range nums { sum = add(sum, num) } return sum } func add(a, b int) int { return a + b }
黑盒測試(example_test.go):
package example_test import ( "testing" "example" ) func TestSum(t *testing.T) { tests := []struct { nums []int sum int }{ {nums: []int{1, 2, 3}, sum: 6}, {nums: []int{2, 3, 4}, sum: 9}, } for _, test := range tests { s := example.Sum(test.nums...) if s != test.sum { t.FailNow() } } }
白盒測試(example_internal_test.go):
白盒測試(example_internal_test.go):package example_test import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int sum int }{ {a: 1, b: 2, sum: 3}, {a: 3, b: 4, sum: 7}, } for _, test := range tests { s := add(test.a, test.b) if s != test.sum { t.FailNow() } } }
總之,從非測試檔案呼叫測試函數違反了Go 測試的原則。應使用單獨的測試包進行單元測試,並遵守既定的工作流程和約定。
以上是可以從非測試檔案呼叫 Go 測試函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!