第一部分:测试入门,没那么可怕
1.1 为什么测试很重要?
想象一下,你写了一个超级牛逼的Go程序,上线后却因为一个小小bug崩溃了。这感觉就像你精心准备了浪漫晚餐,结果发现忘记买主食——尴尬又致命!
测试就是你的安全网,让你在代码高空走钢丝时不怕摔死。而且Go的测试工具简单到令人发指,不学都对不起自己。
1.2 测试基础:文件与命名
在Go中,测试不是玄学,而是有一套简单规则的约定:
- 测试文件:必须是
_test.go结尾。比如你的代码在math.go,测试文件就应该是math_test.go。这规矩比男朋友记得纪念日还简单! - 测试函数:必须用
Test开头,后面跟首字母大写的函数名。参数必须是t *testing.T。例如:
// 在math_test.go中
func TestAdd(t *testing.T) {
result := Add(1, 2)
if result != 3 {
t.Errorf("期望3,得到%d", result)
}
}
1.3 运行测试:简单到哭
是时候亮出我们的魔法咒语了:
go test
就这样?就这样!不加任何参数时,它会测试当前包,输出类似这样的结果:
ok your/package 0.5s
想看看详细过程?加个-v参数:
go test -v
输出会变得话痨起来:
=== RUN TestAdd
--- PASS: TestAdd (0.00s)
=== RUN TestSubtract
--- PASS: TestSubtract (0.00s)
PASS
ok your/package 0.5s
第二部分:实战进阶,测试也要玩出花
2.1 表驱动测试:懒人神器
如果你发现自己为同一个函数写了很多类似测试,像老妈子一样唠叨,那么表驱动测试就是你的救星!
表驱动测试就是把所有测试用例塞进一个"表格"里,然后用一个循环遍历执行。这概念比网红减肥食谱还简单:
func TestAddTableDriven(t *testing.T) {
// 定义测试用例表格
tests := []struct {
name string
a int
b int
expected int
}{
{"正数相加", 2, 3, 5},
{"零相加", 0, 0, 0},
{"负数相加", -1, -1, -2},
{"正负抵消",

最低0.47元/天 解锁文章

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



