Testing 如何将go timeout标志设置为;“去测试”;

Testing 如何将go timeout标志设置为;“去测试”;,testing,go,Testing,Go,抛出此无意义错误 go test -timeout 99999 是虫子吗? 我正在使用 go版本go1.3 “帮助”cli也没用。它表示-test.timeout=0:如果为正,则为所有测试设置聚合时间限制。但是,如果执行test-test.timeout 99999,则会出现相同的错误 invalid value "99999" for flag -test.timeout: time: missing unit in duration 99999 使用有效的time.ParseDura

抛出此无意义错误

go test -timeout 99999
是虫子吗? 我正在使用 go版本go1.3

“帮助”cli也没用。它表示
-test.timeout=0:如果为正,则为所有测试设置聚合时间限制。但是,如果执行test-test.timeout 99999,则会出现相同的错误

invalid value "99999" for flag -test.timeout: 
time: missing unit in duration 99999

使用有效的
time.ParseDuration
输入。比如说,

 -test.timeout=0: if positive, sets an aggregate time limit for all tests

如果测试运行时间超过
t
panic

持续时间标志接受对
time.ParseDuration
有效的任何输入

ParseDuration解析持续时间字符串。持续时间字符串是一个 可能是十进制数的有符号序列,每个都有可选的 分数和单位后缀,如“
300ms
”、“
-1.5h
”或“
2h45m
”。有效的 时间单位为“
ns
”、“
us
”、“
ms
”、“
s
”、“
m
”、“
h


如果您只想在一个测试中使用它,而当它超时时,您想很容易失败,那么有一种简单的方法可以使用超时通道

如果我怀疑某个测试将超时,但我仍然希望它失败,那么使用超时通道即可

因此,假设您有一些代码,您怀疑某些goroutine会死锁,并且希望确保测试失败

为此,我在一个goroutine中运行实际的测试,然后主goroutine坐在那里等待
done
通道完成或
timeout
完成

func TestWithTimeOut(t*testing.t){
超时:=时间后(3*时间秒)
完成:=制作(陈波)
go func(){
//做你的测试
时间。睡眠(5*时间。秒)

完成了“99999期间缺少单元”是一个无意义的错误吗?优雅的解决方案。尽管我希望测试包本身有这样的功能
$ go test -timeout 300ms

$ go test -timeout 99999s
-timeout t
func ParseDuration(s string) (Duration, error)