美文网首页技术干货
造轮子 | golang | 单元测试

造轮子 | golang | 单元测试

作者: yiekue | 来源:发表于2019-05-19 15:21 被阅读11次

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

相关文章

  • 造轮子 | golang | 单元测试

    保障代码能够正确运行很重要的一步就是进行测试,单元测试能够有效的保证函数的正确运行,这对函数内代码的修改非常重要要...

  • golang

    Golang 优化之路——自己造一个日志轮子 据我观察,基本没有人在用 Golang 原生的 log 包写日志。今...

  • golang 自己造packet轮子

    //包的长度,版本,消息ID,错误码

  • 造轮子-golang日志系统

    介绍 golang的log包已经提供了比较完善的功能,我们只是做了一些简单的封装 主要就是构造了Writer,这个...

  • 2019-05-31 程序员修仙进阶标准,你到哪个阶段了?

    闭门造轮子 > 使用别人的轮子 > 开门造轮子 > 分享轮子

  • golang 日志相关

    先收集,以后再弄:Golang 优化之路——自己造一个日志轮子日志切割:lumberjack开源日志:zap,速度...

  • 造轮子之仿射变换

    有人说,我们不应该再造轮子;也有人说,学习怎么造轮子可以带来更深的理解。我说,用轮子有用轮子的乐趣,造轮子有造轮子...

  • 开源时代,一杯敬明天,一杯敬过往

    Reinvent the Wheel 从“我们不要重复造轮子”到,兄弟们“我们造轮子”吧 不要重复造轮子 意味着我...

  • 轮子

    不是想造轮子,而是想获得造轮子的能力,以便我需要造的时候造的出来

  • 【springboot+easypoi】一行代码搞定excel导

    我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子) 开发中经常会遇到excel的处理,导入导出...

网友评论

    本文标题:造轮子 | golang | 单元测试

    本文链接:https://www.haomeiwen.com/subject/bxqqzqtx.html