TDT也叫表格驱动方法,有时也被归为关键字驱动测试(keyword-driven testing,是针对自动化测试的软件测试方法,它将创建测试程序的步骤分为规划及实现二个阶段。Go官方库中有些测试就使用了这种测试方法。
TDT中每个表格项就是一个完整的test case,包含输入和期望的输出,有时候还会加一些额外的信息比如测试名称。如果你发现你的测试中经常copy/paste操作,你就可以考虑把它们改造成TDT。测试代码就一块,但是可以测试表格中的每一项。
自动生成Table-Drived-Tests测试代码的工具。
我们创建tdt目录,内容如下:
func Add(a, b int) int {
return a + b
}
func Min(nums []int) int {
var rst int
for i := range nums {
if rst > nums[i] {
rst = nums[i]
}
}
return rst
}
func Max(nums []int) int {
var rst int
for i := range nums {
if rst > nums[i] {
rst = nums[i]
}
}
return rst
}
// 生成上述代码的表格驱动测试代码,文件名为tdt_test.go
gotests -all -w tdt.go
// Visual Studio Code右键也可以自动生成测试代码
以Add为例,分析生成的代码
func TestAdd(t *testing.T) {
// 需要传入的参数
type args struct {
a int
b int
}
tests := []struct {
name string // 测试的名字
args args // 需要传入的参数
want int // 希望获取到的结果
}{
// TODO: Add test cases.
// 添加自己的测试例子
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Add(tt.args.a, tt.args.b); got != tt.want {
// 如果测试结果不是自己的预期,那么报错。
t.Errorf("Add() = %v, want %v", got, tt.want)
}
})
}
}
填充完上面的测试表格,完成测试即可。