• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言单元测试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Go语言似乎是个偏执狂,牺牲了不必要的灵活性,带来一些强制的编程风格和约定。比如:

  1. 无任何形式的Makefile,模块就是目录、包就是目录、编译配制就是目录!
  2. 不光目录被用上了,文件名还能指定用途。文件名后缀为_test.go的都是单元测试文件,_linux32.go就是32位linux特定的代码。
  3. 不光文件名被用上了,函数名还有特定用途。在单元测试文件中,测试函数以Test开头。以大写字母开头的变量、类型和函数是外部可见的,小写字母开头的变量、类型和函数是外部不可见的。

类似的约定也不好说是go语言首创,在一些文件格式中也有类似规范。但是我暂时不知道到有什么其它编程语言对编程风格这么带强制性。

对于单元测试,假设有如下calc.go文件:

package calc

func Add(a,b int) int {
    return a+
}

func Max(a,b int) (ret int) {
    ret =
    if b > a { 
        ret =
    }   
    return
}

func Min(a,b int) (ret int) {
    ret =
    if b < a { 
        ret =
    }   
    return
}
有如下测试代码calc_test.go:

 

package calc

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)
    }
}
执行go test 得到如下结果:
PASS
ok      _/home/liangdi/Desktop/test/go/testing    0.008
在calc.go中设计一个逻辑错误,把 func Min(a,b int) ret int 改为:
func Min(a,b int) (ret int) {
    ret =
    //逻辑错误
    if b > a { 
        ret =
    }   
    return
}
执行go test的结果为:
--- 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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go泛型发布时间:2022-07-10
下一篇:
各种奇淫技巧集合 开源的网盘下载工具BaiduPCS-Go ...发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap