2 回答
TA贡献1801条经验 获得超8个赞
已用时间:
获取自特定时间 ( start)以来经过的时间的最简单方法是使用time.Since()返回 a的函数,该函数time.Duration具有Duration.Seconds()以秒为单位返回持续时间的方法float64。
所以在你的情况下经过的秒数:
sec := time.Since(start).Seconds()
现在开始测试...
在测试类似睡眠的函数时,您应该考虑到在睡眠之后不能保证代码会立即继续执行。例如引用自的文档time.Sleep():
Sleep 将当前 goroutine 暂停至少持续时间 d。
所以在为类似睡眠的函数编写测试代码时,我会这样测试:
经过的时间应该至少是指定的,
并允许一些误差范围。
因此,例如像这样测试它:
func TestSleep(t *testing.T) {
const secSleep = 65.0
start := time.Now()
mySleepFunction(int(secSleep))
sec := time.Since(start).Seconds()
if sec < secSleep || sec > secSleep*1.05 {
t.Error("Incorrect sleep function")
}
}
TA贡献1852条经验 获得超1个赞
如果您使用 time.Unix() 为您提供自纪元(UTC 1970 年 1 月 1 日)以来的秒数,那么您的测试应该可以工作。
func TestSleep(t *testing.T) {
start := time.Now().Unix()
mySleepFunction(65)
end := time.Now().Unix()
if (end - start) != 65{
t.Error("Incorrect sleep function")
}
}
目前,您的代码正在减去 time.Now() ,它不会返回您想要的结果。您的测试需要表示秒的简单 int 值。
- 2 回答
- 0 关注
- 212 浏览
添加回答
举报