如果没有安装gotests, 首先安装:
go get -u github.com/cweill/gotests
为指定函数生成单元测试
gotests -only 函数名 待测函数所在文件
生成某一文件内的全部函数的单元测试
gotests -all 文件名称
这两个命令会将单元测试的代码输出到terminal终端上。
想输出到文件,可后接-w
选项,会自动生成类似源文件名称_test.go
这样的测试文件。
gotests -only 函数名 -w 待测函数所在文件
gotests -all -w 文件名称
-w
后接多个文件,可同时为这多个文件生成单元测试文件。
生成的测试用例是如下这个样子:
name
: 测试用例的名称。
args
: 传入测试函数的参数。
want
: 期望得到的值。这个want
参数可能根据函数返回值略有不同。
wantErr
:是否期望得到错误。
如果是测试对象的一个函数,如Test_tckit_Sign
, 可能还多一个field
字段需要自己填充。
func TestNewTCKit(t *testing.T) {
type args struct {
rootPath string
certPath string
}
tests := []struct {
name string
args args
want *tckit
wantErr bool
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := NewTCKit(tt.args.rootPath, tt.args.certPath)
if (err != nil) != tt.wantErr {
t.Errorf("NewTCKit() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("NewTCKit() = %v, want %v", got, tt.want)
}
})
}
}
func Test_tckit_Sign(t *testing.T) {
type fields struct {
certPem []byte
certOpt VerifyOption
csp *csp.CSP
}
type args struct {
key common.Key
raw []byte
}
tests := []struct {
name string
fields fields
args args
want []byte
wantErr bool
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
c := &tckit{
certPem: tt.fields.certPem,
certOpt: tt.fields.certOpt,
csp: tt.fields.csp,
}
got, err := c.Sign(tt.args.key, tt.args.raw)
if (err != nil) != tt.wantErr {
t.Errorf("tckit.Sign() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("tckit.Sign() = %v, want %v", got, tt.want)
}
})
}
}
网友评论