GO随笔-单元测试-基础测试

栏目: 编程工具 · 发布时间: 5年前

内容简介:前几天,Leader让我学习GO单元测试并且组内分享。经过这些天在网上查阅资料和实践。总结出以下内容。基础知识:GO为我们提供了测试框架,

单元测试

前几天,Leader让我学习 GO 单元测试并且组内分享。经过这些天在网上查阅资料和实践。总结出以下内容。

基础知识:

GO为我们提供了测试框架, go test ,让我们能够很容易的进行单元测试。

但必须遵守以下几点规则:

最好

只要遵守以上规则,很容易可以编写一个GO单元测试。

在网上查阅资料时,看到有一篇文章写道:

GO随笔-单元测试-基础测试

测试代码的文件放置的位置可以随意?

顿时感觉GO真的好智能,迫不及待的尝试了一下:

GO随笔-单元测试-基础测试

难道需要指定路径?

GO随笔-单元测试-基础测试

可能是我没有理解这句话的含义,但我个人感觉,还是放在一个目录(包)下吧。

package 也可以随意写?

尝试后结论,不能。

写一个简单的单元测试用例

add.go

package add

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

add_test.go

package add

import "testing"

func TestAdd(t *testing.T){
    if sum:=Add(1,2); sum!=3{
        t.Error("fail")//日志一般要写成f(x)=y, want z的形式
    } else {
        t.Log("success")
    }
}

go test -v 即可看到测试结果

GO随笔-单元测试-基础测试

(这里有一点我踩过的小坑,当想指定测试文件的时候 go test file_test.go 会报错,因为需要后面还需要接上被测试的文件: go test file_test.go file.go

只是一个最简单的基本测试。另一种测试方法叫做:表组测试。其实就是多个基本测试。

将上面test简单改造

package add

import "testing"

func TestAdd(t *testing.T){
    var tests = []struct{
        date []int
        want int
    }{
        {[]int{1, 2}, 3},
        {[]int{2, 5}, 7},
        {[]int{3, 9}, 11},
    }

    for _,v := range tests{
        if sum:=Add(v.date[0], v.date[1]); sum!=v.want{
            t.Errorf("Add(%d, %d) = %d, want %d", v.date[0], v.date[1], v.date[0]+v.date[1], v.want)
        } else {
            t.Log("success")
        }
    }
}

运行结果

GO随笔-单元测试-基础测试

能够清楚看到每组测试结果。这种形式能够轻易添加测试用例。


以上所述就是小编给大家介绍的《GO随笔-单元测试-基础测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms in C, Parts 1-4

Algorithms in C, Parts 1-4

Robert Sedgewick / Addison-Wesley Professional / 1997-9-27 / USD 89.99

"This is an eminently readable book which an ordinary programmer, unskilled in mathematical analysis and wary of theoretical algorithms, ought to be able to pick up and get a lot out of.." - Steve Sum......一起来看看 《Algorithms in C, Parts 1-4》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具