Go语言编程思想4——测试与性能调优
Debugging Sucks! Testing Rocks! 多做测试,少做调试
Go语言使用表格驱动测试
一、传统测试正确结果在前,函数结果在后,判断是否相等
- 测试逻辑和测试数据混在一起
- 出错信息不明确
- 一旦一个数据出错测试全部结束
将测试数据写在struct中,a + b = c
卸载for循环中判断add(a,b)是否等于c,若不等于再进一步处理
测试文件命名:测试的东西_test(若不按照标准命名则无法执行测试函数),本例文件命名为Triangle_test
测试函数命名需要为Test+测试名称
- 分离的测试数据和测试逻辑
- 明确的出错信息
- 可以部分失败
- go语言的语法使得我们更易实践表格驱动测试
func calcTriangle(a, b int) int {
var c int
c = int(math.Sqrt(float64(a*a + b*b)))
return c
}
func TestTriangle(t *testing.T) {
tests := []struct{ a, b, c int }{
{3, 4, 5},
{5, 12, 13},
{8, 15, 17},
{12, 35, 37},
{30000, 40000, 50000},
}
for _, tt := range tests {
if actual := calcTriangle(tt.a, tt.b); actual != tt.c {
t.Errorf("calcTriangle(%d,%d);"+
"got %d;expected %d",
tt.a, tt.b, actual, tt.c)
}
}
}
在命令行中运行测试,进入test文件目录,运行go test .
查看测试代码的代码覆盖率
运行测试函数:run ‘…’ with Coverage
被测试的代码中,绿色的是覆盖到的,红色是没有覆盖到的,点击绿色部分可以看到覆盖了多少次
命令行 go test -coverprofile c.out
go tool cover -html c.out
在Triangle_test文件中继续创建下列函数
注意函数命名需要为Benchmark+测试名称
b.N为测试次数
func BenchmarkTriangle(b *testing.B) {
aa := 30000
bb := 40000
cc := 50000
for i := 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?