在 Linux 下用 Go 写单元测试,其实流程比想象中要清爽得多。不需要复杂的配置,也不依赖额外的框架,Go 自带的 testing 包就能搞定大部分场景。下面把关键步骤拆开来说,跟着走一遍基本就清楚了。

创建测试文件 —— 命名规则很直接:把你要测试的源文件名字后面加上
_test.go就行。比如你有一个main.go,对应的测试文件就是main_test.go。这个文件要放在同一个包目录下,不需要额外注册。导入必要的包 —— 测试文件里至少要导入
testing包,这是 Go 测试框架的入口。如果涉及 HTTP 测试或字节缓冲区操作,再按需加上net/http/httptest、bytes这些包。注意,不用额外引入类似fmt,除非你确实需要打印调试信息。编写测试函数 —— 每个测试函数必须以
Test开头,后面跟一个能说明测试意图的名字(比如TestSum)。函数参数是*testing.T类型,用来报告失败或记录日志。举个例子:package main import "testing" func TestSum(t *testing.T) { result := Sum(2, 3) if result != 5 { t.Errorf("Sum(2, 3) = %d; want 5", result) } }这段代码测试的是
Sum函数,如果结果不对,测试就会失败并给出明确的错误信息。运行测试 —— 直接在终端里敲
go test,它会自动查找当前目录下所有_test.go文件并执行其中的测试函数。输出结果会告诉你每个测试是 pass 还是 fail。查看测试覆盖率 —— 想知道代码被测试覆盖了多少?加个
-cover标志:go test -cover如果想生成更详细的报告,可以用
-coverprofile输出到一个文件:go test -coverprofile=coverage.out然后通过
go tool cover查看 HTML 形式的可视化报告:go tool cover -html=coverage.out这会在浏览器里打开一个页面,哪些代码行被覆盖了、哪些没跑过,一目了然。
这几步走完,Linux 上 Go 单元测试的基础流程就搭建起来了。实际项目中,测试文件和业务代码一样需要持续维护,但有了这个骨架,后面再写更复杂的测试(比如表驱动测试、Mock 接口)就顺理成章了。