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

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

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

查看所有标签

猜你喜欢:

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

Ruby元编程

Ruby元编程

[意] Paolo Perrotta / 廖志刚、陈睿杰 / 华中科技大学出版社 / 2012-1-10 / 56.00元

《Ruby元编程》以案例形式循序渐进讲解Ruby对象模型原理和高级应用技巧,堪称动态语言的设计模式。书中讲述的各种Ruby编程模式,完全可以应用于其他动态语言(甚至静态语言)。本书不仅适合Ruby程序员阅读,也适合对动态编程 语言和面向对象编程感兴趣的读者阅读。所有对程序设计理论感兴趣的人都能从中获益。Ruby之父松本行弘作序推荐。一起来看看 《Ruby元编程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试