测试原则
- 尽量只测试公有的接口,而非私有的实现
- 避免测试和实现过于耦合,不利于后面的重构
单元测试
- go test的参数
-v
获得详细信息count
每个测试函数的重复执行的次数-count=1
可以禁用测试缓存
-race
检测竞争cpu
使用的逻辑CPU数量- 模拟被测程序在计算能力不同计算机中的性能表现
run <regex>
运行正则匹配的测试用例- 例如
-run ^Array
那么就执行包含有 Array 开头的函数
- 例如
// 运行全部单元测试
go test -v -count=1 -race ./...
预处理和后处理
- 通过
func TestMain(m *testing.M)
函数实现- 一个包里只能有一个TestMain函数
- 在所有单元测试和基准测试开始前和结束后进行预处理和收尾
func TestMain(m *testing.M) {
setUp() // 代表测试前要执行的代码
code := m.Run()// 执行所有预设的单元测试,code为退出码
tearDown() // 代表测试后执行的代码
os.Exit(code)
}
测试报错
t.Fail()
记录失败但不停止该测试用例后