其他分享
首页 > 其他分享> > 03.vscode技巧2

03.vscode技巧2

作者:互联网

1.Go:Generate Unit Tests For Functions


使用方法
步骤1.书写函数,如下

// 代码文件 unit.go
package skill

func Add(a, b int) int {
    return a + b
}

func Sub(a, b int) int {
    return a - b
}

步骤2.创建测试文件 unit_test.go

package skill

如果测试文件已经存在,可以略过

步骤3.快捷键 Ctrl+Shift+P,选择 Go:Generate Unit Tests For Functions
生成代码如下

func TestAdd(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
    }
    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)
            }
        })
    }
}
func TestSub(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sub(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Sub() = %v, want %v", got, tt.want)
            }
        })
    }
}

// 补充完整的代码中 TODO:Add test cases
package skill

import (
    "testing"
)

func TestAdd(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
        {
            name: ">0",
            args: args{
                a: 10,
                b: 20,
            },
            want: 30,
        }, {
            name: "=0",
            args: args{
                a: 0,
                b: 0,
            },
            want: 0,
        },
    }
    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)
            }
        })
    }
}

func TestSub(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
        {
            name: ">0",
            args: args{a: 6, b: 3},
            want: 3,
        },
        {
            name: "=0",
            args: args{a: 3, b: 3},
            want: 0,
        },
        {
            name: "<0",
            args: args{a: 6, b: 9},
            want: -3,
        },
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sub(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Sub() = %v, want %v", got, tt.want)
            }
        })
    }
}

TODO: Add test cases.需要你填写自己的测试用例

不过要值的注意的是,在测试函数中,使用t.Log()函数是不会在终端输出内容的,需要加一个-v参数:

2.Go:fill Struct

操作步骤

步骤1.书写{},光标放到{}

步骤2.快捷键Shift+CMD+P,选择Go:Fill struct


生产代码结果

注意点:由于tests的类型是一个结构体切片[]struct,所以在生成的代码后面需要手动补一个逗号,,按保存就自动格式化代码了

3.Go:Generate Interface Stubs

示例代码

package skill

type Speaker interface {
    // Speak speak action
    Speak()
}

type Student struct {
}

快捷键Shift+CMD+P,选择Go:Generate Interface Stubs



生成代码如下
其中生成代码的时候,务必注意光标在 非函数体外

package skill

type Speaker interface {
    // Speak speak action
    Speak()
}

type Student struct { // Speak speak action

}

func (s *Student) Speak() {
    panic("not implemented") // TODO: Implement
}

4.自动增加/删除tag

5.Go:Add import

查找接口的具体实现

6.Go:Extract to variable

字段提取主要用于判断条件复杂的场景,如果该条件判断在多个地方使用,最好是抽离出来,提取成一个变量

具体操作步骤:

7.Go:Extract to function

示例代码

func ExtractFuncTest(a, b, c int) {
    if a > 0 {
    }
    if b > 0 {
    }
    if c > 0 {
    }
}





8.

标签:03,技巧,vscode,tt,args,int,Add,want,Go
来源: https://www.cnblogs.com/zsh2871/p/03vscode-ji-qiao2.html