在 Go 中,单元测试通常使用 go test 运行,它识别并执行标记为的测试函数测试.T 参数。然而,问题出现了:可以从非测试文件调用测试函数来启动测试执行吗?
不幸的是,答案是否定的。 Go 的测试框架旨在强制测试和非测试代码之间的分离。测试函数只能从测试文件中调用,并且被测试的单元必须从适当的包中导入。
Go 支持两种主要测试模式:
考虑一个名为 example 的示例包,其中包含 add 实用函数和导出的 Sum利用内部 add 函数的函数。
example.go:包含导出和未导出函数的软件包
<code class="go">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 }</code>
<code class="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() } } }</code>
<code class="go">package example 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() } } }</code>
总之,由于测试代码和非测试代码之间的设计分离,从测试文件外部调用测试函数是不可能的在围棋中。单元测试应始终通过 go test 命令执行,确保关注点分离并防止意外的代码执行。
以上是你可以在 Go 中从测试文件外部调用测试函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!