Posted in

【Go项目质量保障体系】:以go test为核心的CI/CD落地策略

第一章:go test框架简介

Go语言内置的go test命令及其配套的testing包,为开发者提供了轻量且高效的单元测试支持。无需引入第三方库,即可完成函数级验证、性能基准测试和代码覆盖率分析。测试文件遵循_test.go命名规则,与被测代码放在同一包中,便于访问包内变量和函数。

测试函数的基本结构

每个测试函数以Test为前缀,接收*testing.T类型的指针参数。通过调用t.Errort.Errorf报告错误,而t.Log可用于输出调试信息。例如:

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    expected := 5
    if result != expected {
        t.Errorf("期望 %d,但得到 %d", expected, result)
    }
}

执行go test命令时,Go工具链会自动查找并运行所有符合规范的测试函数。

运行测试与常用选项

使用命令行执行测试是标准做法。常见指令包括:

  • go test:运行当前包的所有测试
  • go test -v:显示详细输出,包含每个测试函数的执行情况
  • go test -run TestName:仅运行匹配正则表达式的测试函数
  • go test -cover:显示代码覆盖率
选项 作用
-v 显示详细日志
-run 按名称过滤测试
-cover 输出覆盖率

基准测试

性能测试函数以Benchmark开头,接收*testing.B参数。框架会自动循环多次调用以评估性能表现:

func BenchmarkAdd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Add(2, 3)
    }
}

b.N由运行时动态调整,确保测量结果具有统计意义。执行go test -bench=.可运行所有基准测试。

热爱 Go 语言的简洁与高效,持续学习,乐于分享。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注