美文网首页
golang 测试gotests

golang 测试gotests

作者: 金果儿 | 来源:发表于2020-02-23 14:58 被阅读0次

    如果没有安装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)
                }
            })
        }
    }
    
    

    相关文章

      网友评论

          本文标题:golang 测试gotests

          本文链接:https://www.haomeiwen.com/subject/xpdjqhtx.html