周五晚上,一杯茶,一段看似无懈可击的代码——直到它在生产环境崩溃。Go语言的测试工具链正是为了避免这种噩梦而设计。
本文涉及的知识点实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch,行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
前言:为什么你的代码需要“安全带”?
典型的周五晚上,你已经放松下来,喝着一杯茶。但这时,DevOps同事发来了应用程序错误截图的消息。经过紧张的排查,终于找到了那行让所有人都无法安心生活的代码。我不希望经常遇到这种情况,也不希望未来再受同样的折磨。单元测试就是代码的“安全带”——尽管开发时可能觉得是负担,但关键时刻它能防止严重事故。
一、Go测试入门:简单到无法拒绝
Go语言将测试作为一等公民,内置了强大的测试支持。毫不夸张地说,Go让测试变得如此简单,几乎找不到不写测试的借口。
1.1 核心命令:go test
Go测试工具链的核心是go test命令。它是一个依据特定约定来组织和驱动测试的程序。当你在一个包目录中执行go test时,它会自动寻找并执行所有符合测试规范的用例。
1.2 测试文件的约定
go test遵循简单的命名约定:
- 文件名:所有以
_test.go为后缀的源文件都会被识别为测试文件 - 构建排除:
go build会忽略这些_test.go文件,不会增加最终可执行文件的大小
1.3 测试函数的类型
在_test.go文件中,主要包含以下几种测试函数:
- 功能测试:函数名以
Test开头,如TestMyFunction - 性能测试:函数名以
Benchmark开头,如BenchmarkMyFunction - 示例测试:函数名以
Example开头,用于生成示例文档 - 模糊测试:以
Fuzz开头,用于自动化边界测试(Go 1.18+)
二、编写你的第一个单元测试
让我们通过一个具体例子,一步步创建你的第一个“不翻车”测试。
2.1 准备被测试的代码
首先,创建add.go文件,定义一个简单的加法函数:
package main
func Add(a, b int) int {
return a + b
}

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



