在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Go语言似乎是个偏执狂,牺牲了不必要的灵活性,带来一些强制的编程风格和约定。比如:
类似的约定也不好说是go语言首创,在一些文件格式中也有类似规范。但是我暂时不知道到有什么其它编程语言对编程风格这么带强制性。 对于单元测试,假设有如下calc.go文件: package calc
有如下测试代码calc_test.go:func Add(a,b int) int { return a+b } func Max(a,b int) (ret int) { ret = a if b > a { ret = b } return } func Min(a,b int) (ret int) { ret = a if b < a { ret = b } return }
package calc
执行go test 得到如下结果:import ( "testing" ) type calcTest struct { a,b,ret int } var addTests = []calcTest{ calcTest{4,6,10}, calcTest{5,6,11}, calcTest{8,-10,-2}, } func TestAdd(t *testing.T) { for _,v := range addTests { ret := Add(v.a,v.b) if ret != v.ret { t.Errorf("%d add %d,want %d,but get %d",v.a,v.b,v.ret,ret) } } } func TestMax(t *testing.T){ a,b := 100,300 ret := Max(a,b) if ret != b { t.Errorf("%d is bigger than %d",b,a) } } func TestMin(t *testing.T) { a,b := 100,300 ret := Min(a,b) if ret != a { t.Errorf("%d is smaller than %d",a,b) } } PASS
在calc.go中设计一个逻辑错误,把 func Min(a,b int) ret int 改为:ok _/home/liangdi/Desktop/test/go/testing 0.008 func Min(a,b int) (ret int) {
执行go test的结果为:ret = a //逻辑错误 if b > a { ret = b } return }
--- FAIL: TestMin (0.00 seconds)
calc_test.go:38: 100 is smaller than 300 FAIL exit status 1 FAIL _/home/liangdi/Desktop/test/go/testing 0.005s |
请发表评论