go语言中单元测试的加深版本

栏目: Go · 发布时间: 5年前

内容简介:基础知识:GO为我们提供了测试框架,go test,让我们能够很容易的进行单元测试。但必须遵守以下几点规则:

元测试

总结一些单元测试的相关类容以供以后进行学习与参考

基础知识:

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

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

* 测试文件必须以_test.go结尾
* 单元测试文件名_test.go前面的部分最好是被测方法所在 go 文件的文件名。(不一样也可以运行go test,但是应该遵守统一的规范)
* 单元测试的函数必须以Test开头,是公开函数
* 测试函数必须接收一个指向testing.T类型的指针(依测试目的而定,如主要是测试性能,则用testing.B等),并且不能返回任何值。
* 函数名最好是Test+测试函数名(依测试类型而定,Benchmark等)。 `其中Bench开始的是压力测试`

若是遵循上述的几点规则,可以很容易些出一个测试环节

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

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 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")
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Python for Data Analysis

Python for Data Analysis

Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99

Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器