测试并发代码时,经常能看到一种熟悉的写法:启动 goroutine,调用 time.Sleep 等一会儿,再检查结果。

问题在于,“等一会儿”没有可靠定义。休眠太短,CI 负载升高时测试会偶发失败;休眠太长,又会拖慢整个测试套件。涉及超时和定时器时,测试甚至可能真的等待几十秒。

Go 1.25 将 testing/synctest 转为稳定的标准库 API。它通过虚拟时间和明确的同步点,让并发测试摆脱对机器调度速度的依赖。