如果沒有安裝gotests, 首先安裝:
go get -u github.com/cweill/gotests
為指定函數(shù)生成單元測試
gotests -only 函數(shù)名 待測函數(shù)所在文件
生成某一文件內(nèi)的全部函數(shù)的單元測試
gotests -all 文件名稱
這兩個命令會將單元測試的代碼輸出到terminal終端上费封。
想輸出到文件蒋伦,可后接-w
選項,會自動生成類似源文件名稱_test.go
這樣的測試文件痕届。
gotests -only 函數(shù)名 -w 待測函數(shù)所在文件
gotests -all -w 文件名稱
-w
后接多個文件,可同時為這多個文件生成單元測試文件研叫。
生成的測試用例是如下這個樣子:
name
: 測試用例的名稱。
args
: 傳入測試函數(shù)的參數(shù)嚷炉。
want
: 期望得到的值。這個want
參數(shù)可能根據(jù)函數(shù)返回值略有不同绘证。
wantErr
:是否期望得到錯誤。
如果是測試對象的一個函數(shù)嚷那,如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)
}
})
}
}