Golang 用(测试数据)表驱动测试
在Go语言中,可以使用testing
包来编写表驱动测试。以下是一个简单的示例,演示如何使用表驱动方法测试一个简单的字符串逆序函数:
package mypackage
import (
"testing"
)
// isReversed 检查字符串是否已逆序。
func isReversed(s string) bool {
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
if s[i] != s[j] {
return false
}
}
return true
}
// 测试用例表
var tests = []struct {
input string
want bool
}{
{"", true},
{"a", true},
{"aa", true},
{"ab", false},
{"kata", true},
{"level", false},
{"rotator", true},
{"compulser", true},
}
// TestReversed 对isReversed函数执行表驱动测试。
func TestReversed(t *testing.T) {
for _, tt := range tests {
t.Run(tt.input, func(t *testing.T) {
if got := isReversed(tt.input); got != tt.want {
t.Errorf("isReversed(%s) = %v, want %v", tt.input, got, tt.want)
}
})
}
}
在这个示例中,我们定义了一个isReversed
函数来检查字符串是否是逆序的。然后我们创建了一个测试用例表tests
,它包含了不同的输入和预期输出。TestReversed
函数遍历这个表,对于每一项,使用t.Run
创建一个子测试,以此来测试isReversed
函数。如果函数的返回值与期望值不匹配,则标记测试失败。
评论已关闭