比如我要测试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
,可以自动生成测试文件。
![](https://static.studygolang.com/190710/c64211207b453a9752f32463bee775af.png)
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
,就会显示测试结果
![](https://static.studygolang.com/190710/2d310cb645234188f30b9c5c60e5d8f7.png)
测试成功
![](https://static.studygolang.com/190710/151e812db25c88ba584fc1df5cd6c07b.png)
测试失败
如果想要更详细的结果,用
go test -v
![](https://static.studygolang.com/190710/e853d85f6dbb4fbaba195bc71cd2a9ea.png)
go test -v 测试失败结果
参考文章
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/11.3.md
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)