如何检测*testing.T是否已设置为并行运行?
检测testing.T是否已设置为并行运行
Go标准库的testing.T并未提供公开方法直接判断是否调用过Parallel(),但可以通过反射读取其内部字段实现该功能:
import "reflect" func isParallelT(t *testing.T) bool { val := reflect.ValueOf(t).Elem() // 读取testing.T内部的isParallel字段 parallelField := val.FieldByName("isParallel") if !parallelField.IsValid() { return false } return parallelField.Bool() }
- 注意:这种实现依赖
testing.T的内部结构,不同Go版本可能修改字段名或逻辑,存在兼容性风险 - 更稳妥的方式是在测试代码中封装
Parallel()调用,自行追踪并行状态,避免依赖内部实现
内容的提问来源于stack exchange,提问作者Max Collier
相关产品推荐
相关产品推荐

