网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Go语言的单元测试方法是什么

本篇内容主要讲解“Go语言的单元测试方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言的单元测试方法是什么”吧!

专业从事成都做网站、成都网站建设,高端网站制作设计,重庆小程序开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用H5建站+CSS3前端渲染技术,响应式网站设计,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。

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

无任何形式的Makefile,模块就是目录、包就是目录、编译配制就是目录!

不光目录被用上了,文件名还能指定用途。文件名后缀为_test.go的都是单元测试文件,_linux32.go就是32位linux特定的代码。

不光文件名被用上了,函数名还有特定用途。在单元测试文件中,测试函数以Test开头。以大写字母开头的变量、类型和函数是外部可见的,小写字母开头的变量、类型和函数是外部不可见的。

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

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

package calc

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
}

有如下测试代码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 = a 
    //逻辑错误
    if b > a { 
        ret = b 
    }   
    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

到此,相信大家对“Go语言的单元测试方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


文章名称:Go语言的单元测试方法是什么
分享路径:http://bjjierui.cn/article/jpshgp.html

其他资讯