0
我发现了'去测试'通过,但如果我特定的子测试,它会失败,在这里我给一个全局变量样本,'去测试'将通过,'去测试运行f/sample2'将失败。什么是让'去测试运行<case>'作为'去测试'成功的一般规则?
我很好奇我应该遵循什么规则来防止这些问题?
t.go
package main
import "fmt"
var g string
func f(s string) string {
g = g + s
return s + g
}
func main() {
fmt.Println(f("a"))
}
t_test.go
package main
import (
"testing"
)
func Test_f(t *testing.T) {
tests := []struct {
name string
g string
s string
r string
}{
{"simple", "g1", "s1", "s1s1"},
{"simple2", "g2", "s2", "s2s1s2"},
{"simple3", "g3", "s3", "s3s1s2s3"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
//g = tt.g
r := f(tt.s)
if r != tt.r {
t.Error("r=", r, "expect r=", tt.r)
}
})
}
}
如果全局变量的问题,我经常喜欢写东西osExit fmtPrint更换os.Exit和fmt.Print上测试,如何克服这些?