发现一个自动生成测试用例的工具gotests。
gotests https://github.com/cweill/gotests
下载
go get -u github.com/cweill/gotests/...
举个栗子: add.go
package main
func Add(a int, b int) int {
return a + b
}
同目录下执行
gotests -all -w ./add.go
同目录自动生成 add_test.go文件
package main
import "testing"
func TestAdd(t *testing.T) {
type args struct {
a int
b int
}
tests := []struct {
name string
args args
want int
}{
}
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)
}
})
}
}
填充用例数据:
package main
import "testing"
func TestAdd(t *testing.T) {
type args struct {
a int
b int
}
tests := []struct {
name string
args args
want int
}{
{
"a=3,b=1",
args{3, 1},
4,
},
{
"a=3,b=-1",
args{3, -1},
4,
},
}
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)
}
})
}
}
完成。接下来执行go test .就可以跑用例啦
其他参数说明:
$ gotests [options] PATH … -all generate tests for all functions and methods
-excl regexp. generate tests for functions and methods that don’t match. Takes precedence over -only, -exported, and -all -exported generate tests for exported functions and methods. Takes precedence over -only and -all -i print test inputs in error messages -only regexp. generate tests for functions and methods that match only.Takes precedence over -all -nosubtests disable subtest generation when >= Go 1.7 -parallel enable parallel subtest generation when >= Go 1.7. -w write output to (test) files instead of stdout -template_dir Path to a directory containing custom test code templates. Takes precedence over -template. This can also be set via environment variable GOTESTS_TEMPLATE_DIR -template Specify custom test code templates, e.g. testify. This can also be set via environment variable GOTESTS_TEMPLATE -template_params_file read external parameters to template by json with file -template_params read external parameters to template by json with stdin
|