golang 测试gotests

金果儿 · · 1409 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1409 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传