单元测试、压力测试、性能测试
1、testing
testing包进行golang的单元测试,但testing也是有其限制性;
使用者要不断地写if else来判断显然麻烦;
使用gocheck单元测试框架
每个测试文件必须以 _test.go 结尾;
功能测试方法必须以 Test 开头,一般是接被测方法的名字;
go test -v //可以看到详细的输出信息。
go test -v -cover //显示覆盖的声明程度
2、gocheck
gocheck作为golang的一种测试框架,可以直接继承go test使用
常见检查方法(Checker)
DeepEquals 全等校验,类型必须相同,校验比较严格,一般很少使用,因为校验结果失败的概率比较高;
Equals 相当于 ==校验,比全等校验相对来说要宽松一点;
FitsTypeOf 校验类型是否一致;
HasLen 校验长度是否一致;
IsNil 校验返回值是否为空;
Assert 根据预期 Checker 值检验接口返回值与预期值是否匹配,如果它们不匹配,则会记录错误,测试记录不通过,并且测试用例将停止
如:c.Assert(42, Equals, Add(12, 30))
1、go test -v
查看测试信息
2、功能测试t *testing.T
文件名必须是_test.go结尾的
测试格式:func TestXxx (t *testing.T) Xxx首字母大写
测试函数TestXxx(t *testing.T)的参数是testing.T
t.Error("除法函数测试没通过") // 测试出错时,显示的信息
t.Log("第一个测试通过了") //测试通过时,显示的信息
3、性能测试b *testing.B
func BenchmarkXXX(b *testing.B) { ... }
go test -test.bench=Benchmark_Division //执行指定的测试函数
go test -test.bench=. //.表示执行所有测试函数
go test -test.bench=. -count=5 //-count指一个测试函数执行多少次
go test -test.bench=. -V //查看测试信息
4、go test不会默认执行压力测试的函数,如果要执行压力测试需要带上参数-bench,例如go test -bench=. 表示测试全部的压力测试函数
有疑问加站长微信联系(非本文作者)