造轮子 | golang | 单元测试

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

内容简介:保障代码能够正确运行很重要的一步就是进行测试,单元测试能够有效的保证函数的正确运行,这对函数内代码的修改非常重要要,可以保证在改出bug第一时间就能暴露出来。go语言使用自带的单元测试的函数一般都放到一个在

保障代码能够正确运行很重要的一步就是进行测试,单元测试能够有效的保证函数的正确运行,这对函数内代码的修改非常重要要,可以保证在改出bug第一时间就能暴露出来。go语言使用自带的 testinggo test 可以方便的进行单元测试,本文以编写 lru4go 的单元测试为例记录下 go 自带的单元测试的基本使用方法。

基础

单元测试的函数一般都放到一个 *_test.go 的文件中,这个文件和被测试的函数处于同一个包中,在编译的时候这个文件不会编译进入二进制文件中,在要测试的包目录下执行 go test -v 就可以执行目录下所有 *_test.go 文件中的测试用例:

造轮子 | golang | 单元测试

go test测试执行结果

测试用例编写

*_test.go 文件中我们可以编写一条一条的测试用例。测试文件所属的包和被测试的函数同属一个包,并且要导入 testing 包:

package lru4go

import (
    "testing"
)

测试用例都是以 Test 开头,并且传入一个 * testing.T 的参数:

func TestLrucache_Set(t *testing.T) {
    cache, _ := New(50)
    if cache == nil {
        t.Fatal("create cache failed!")
    }
    cache.Set("test1", 123)
    v, err := cache.Get("test1")
    if err != nil {
        t.Fatal("get failed,err:", err)
    }
    if v == nil {
        t.Fatal("get failed, value is nil")
    }
}

t 的常用方法:

方法名 描述
Log(args ...interface{}) 打印日志,类似于 Println
Logf(format string, args ...interface{}) 打印日志,类似于 Printf
SkipNow() 跳过当前测试用例
Skip(args ...interface{}) 相当于 SkipNow() + Log()
Fail() 标记失败,但继续执行当前用例
FailNow() 标记失败而且停止执行当前用例
Fatal(args ...interface{}) 相当于 FailNow() + Log()
Error(args ...interface{}) 相当于 Fail() + Log()

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Visual Thinking

Visual Thinking

Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95

Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具