2.3 测试
测试是避免事故的最后一道屏障
回归测试 -> 集成测试 -> 单元测试,从上到下,覆盖率逐层变大,成本逐层降低
2.3.1 单元测试
- 所有测试文件以_test.go结尾
- func TestXxx(*testing.T)
- 初始化逻辑放在 TestMain 中
-
示例:
/* hello.go */ package main func HelloBanana() string { return "banana" } /* hello_test.go */ package main import ( "github.com/stretchr/testify/assert" "testing" ) func TestHelloBanana(t *testing.T) { output := HelloBanana() expectOutput := "banana" assert.Equal(t, expectOutput, output) // 用第三方包对比 }
然后执行命令:
(base) ➜ go test -v hello.go hello_test.go === RUN TestHelloBanana --- PASS: TestHelloBanana (0.00s) PASS ok command-line-arguments 0.007s
-
覆盖率
表示要测试的函数运行了多少行,即覆盖比例,在测试命令后加 --cover 即可
一般覆盖率50%-60%,较高覆盖率80%+
-
Mock、基准测试(压力测试) 略