当前位置:首页 >专题 >Go 测试生命周期与隔离工程实践专题

Go 测试生命周期与隔离工程实践专题
Go 测试生命周期与隔离

Go 测试生命周期与隔离工程实践专题

从 T.Context、Cleanup 到并行测试与竞态验收
现代 Go 测试的难点不只在断言,而在测试结束时后台任务是否真的退出、进程级状态是否被恢复、并行子测试是否彼此隔离,以及 race detector 是否覆盖了真实执行路径。本专题以 testing.T.Context、t.Cleanup、t.Setenv、t.Parallel 和 -race 为主线,把测试生命周期、资源收口、共享状态和回归验收串成一条可落地的工程路线。

站内生命周期实战文章

从取消清理、环境恢复到并行隔离与竞态验收

Go testing.T Context 如何处理测试超时:Cleanup、取消信号与失败收口
文章

Go testing.T Context 如何处理测试超时:Cleanup、取消信号与失败收口

用 t.Context、ctx.Done 和 t.Cleanup 让后台任务在测试结束时可靠退出。
Go 测试里修改环境变量为什么不能和 t.Parallel 一起用
文章

Go 测试里修改环境变量为什么不能和 t.Parallel 一起用

解释 t.Setenv 修改进程级环境,以及它和并行测试冲突的根因。
Go testing.T.Parallel 子测试共享数据怎么隔离
文章

Go testing.T.Parallel 子测试共享数据怎么隔离

讨论并行子测试中的切片、map、请求对象和夹具复制策略。
Go testing.T.Parallel 调用后为什么要等待父测试返回
文章

Go testing.T.Parallel 调用后为什么要等待父测试返回

用最小实验解释并行子测试暂停、父测试返回和共享夹具释放顺序。
Go go test -race 为什么能发现共享变量数据竞争
文章

Go go test -race 为什么能发现共享变量数据竞争

解释 race detector 如何依据实际内存访问和 happens-before 关系报告冲突。
Go sync.WaitGroup Done 少调用一次为什么会一直等待
文章

Go sync.WaitGroup Done 少调用一次为什么会一直等待

从 Add、Done、Wait 的计数配对说明测试和 worker 收口中的等待陷阱。
Go testing.F 失败语料保存在哪里
文章

Go testing.F 失败语料保存在哪里

区分 fuzz corpus、失败输入和 Go 管理的 fuzz cache。
VS Code 怎么给 Go 项目配置测试任务:tasks.json 运行与结果验收
文章

VS Code 怎么给 Go 项目配置测试任务:tasks.json 运行与结果验收

将 go test 命令、测试发现和编辑器任务配置连接起来。

发布前隔离清单

用重复运行、超时和竞态检查证明测试真的稳定

生命周期收口
问答

生命周期收口

每个后台 worker 都接收 context,在 ctx.Done 后退出,并由 Cleanup 等待可验证的 stopped 或 WaitGroup 信号。
状态隔离
问答

状态隔离

环境变量、当前目录、固定端口、数据库记录和包级变量要么串行使用,要么改为显式依赖注入和独立夹具。
回归验收
问答

回归验收

组合 go test -race、-count、-shuffle、-timeout 和目标子测试运行,记录失败语料与最小复现命令。
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码