比如我要测试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
,可以自动生成测试文件。
我们只要在代码中加入自己的数据即可。
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
网友评论