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随笔-单元测试-基础测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

现代操作系统(第3版)

现代操作系统(第3版)

Andrew S. Tanenbaum / 陈向群、马洪兵 / 机械工业出版社 / 2009-7 / 75.00元

本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、Windows Vista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。此外,还在第2版的基础上对部分习题进行了增删,更有助于读者学......一起来看看 《现代操作系统(第3版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

在线 XML 格式化压缩工具