造轮子 | golang | 单元测试

yiekue · · 1003 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

基础

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

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()

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:yiekue

查看原文:造轮子 | golang | 单元测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1003 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传