美文网首页
go 单元测试

go 单元测试

作者: louhangfei | 来源:发表于2019-07-10 19:42 被阅读0次

    比如我要测试utils.go文件中GetDayGap这个函数。它用来计算两个日期相差多少天的。

    // 获取两个日期相差多少天
    func GetDayGap(now time.Time, before time.Time) int {
        now = now.UTC().Truncate(24 * time.Hour)
        before = before.UTC().Truncate(24 * time.Hour)
        sub := now.Sub(before)
        return int(sub.Hours() / 24)
    }
    

    我们需要新建一个utils_test.go文件,在webStorm中通过⌘+N,可以自动生成测试文件。

    image.png

    我们只要在代码中加入自己的数据即可。

    func TestGetDayGap(t *testing.T) {
        type args struct {
            now    time.Time
            before time.Time
        }
        var formatStr = "2006-01-02 15:04:05"
        day1, _:= time.Parse(formatStr, "2019-07-10 11:11:11")
        day2, _:= time.Parse(formatStr, "2019-07-10 22:11:11")
        day3, _:= time.Parse(formatStr, "2019-07-13 22:11:11")
        tests := []struct {
            name string
            args args
            want int
        }{
            {"同一天", args{day1, day2}, 0}, //在这里写入测试的数据
            {"差3天", args{day1, day3}, 3}, // 如果有多个条件,就写多个
        }
        for _, tt := range tests {
            t.Run(tt.name, func(t *testing.T) {
                if got := GetDayGap(tt.args.now, tt.args.before); got != tt.want {
                    t.Errorf("GetDayGap() = %v, want %v", got, tt.want)
                }
            })
        }
    }
    
    

    在该目录中执行go test,就会显示测试结果

    测试成功 测试失败
    如果想要更详细的结果,用go test -v
    go test -v 测试失败结果

    参考文章
    https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/11.3.md

    相关文章

      网友评论

          本文标题:go 单元测试

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