gpt4 book ai didi

unit-testing - 如何在golang中测试 sleep 功能

转载 作者:IT王子 更新时间:2023-10-29 01:17:11 25 4
gpt4 key购买 nike

我自己写了 sleep 函数,想测试一下。以下是我的代码:

func TestSleep(t *testing.T) {
start := time.Now()
mySleepFunction(65)
end := time.Now()
if (end - start) != 65 {
t.Error("Incorrect sleep function")
}
}

这是行不通的。我正在尝试获取开始时间和结束时间,然后将其与预期时间进行比较。预期时间将以秒为单位。我尝试了 end.Sub(start),但这返回了类似 1m30.0909 的内容,结果我需要 90。如果有人可以帮助我,那就太好了。谢谢:)

最佳答案

耗时:

获取自特定时间(开始)以来耗时的最简单方法是使用 time.Since()返回 time.Duration 的函数它有一个 Duration.Seconds()方法返回以秒为单位的持续时间作为 float64

所以在你的情况下经过的秒数:

sec := time.Since(start).Seconds()

现在开始测试......

在测试类似 sleep 的函数时,您应该考虑到在 sleep 之后不能保证代码会立即继续执行。例如引用 time.Sleep() 的文档:

Sleep pauses the current goroutine for at least the duration d.

所以在写sleep-like函数的测试代码时,我会这样测试:

  • 耗时应至少达到指定的时间,
  • 并允许一些误差范围。

所以例如像这样测试它:

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")
}
}

关于unit-testing - 如何在golang中测试 sleep 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com