从非测试文件调用测试函数
在 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):
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中文网其他相关文章!