造轮子 | golang | 单元测试

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

内容简介:保障代码能够正确运行很重要的一步就是进行测试,单元测试能够有效的保证函数的正确运行,这对函数内代码的修改非常重要要,可以保证在改出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()

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

查看所有标签

猜你喜欢:

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

挑战程序设计竞赛

挑战程序设计竞赛

秋叶拓哉、岩田阳一、北川宜稔 / 巫泽俊、庄俊元、李津羽 / 人民邮电出版社 / 2013-7-1 / CNY 79.00

世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。 本书适合程序设计......一起来看看 《挑战程序设计竞赛》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具