Go 测试

Go 测试主线围绕 testing 包、测试文件约定和 table-driven 风格展开,是 Go 工具链中最基础的质量反馈入口。

#type / concept #status / growing #tech / dev #resource / go

[!info] related notes

Go 测试

一句话定义

Go 测试是围绕标准库 testing 包、*_test.go 文件约定和 go test 命令建立起来的一套内建质量反馈机制。

核心机制 / 工作原理

Go 对测试的支持很原生:

  • *_test.go 识别测试文件
  • TestXxx(t *testing.T) 识别测试函数
  • go test 统一执行

这使得测试不是外接插件式能力,而是工具链的一部分。

Go 测试里常见的一条风格主线是 table-driven tests,也就是:

  • 用一组样例表驱动同一段断言逻辑
  • 降低重复样板
  • 更容易扩展边界条件

最小例子 / 最小场景

func TestAdd(t *testing.T) {
    got := Add(1, 2)
    if got != 3 {
        t.Fatalf("want 3, got %d", got)
    }
}

为什么这部分重要

Go 的很多工程优势并不只来自语言本身,也来自工具链默认把测试纳入日常开发路径。会写测试,才能真正进入 benchmark、竞态检测和回归验证。

边界与易混淆点

  • 测试不是只会断言成功路径,还要覆盖边界和失败路径
  • benchmark 也是 testing 体系的一部分,但目标和普通测试不同
  • go test 能跑通,不等于测试设计已经合理
创建于 2026/6/20 更新于 2026/6/20