首页 > 其他分享 >Go Testing单元测试

Go Testing单元测试

时间:2022-11-25 16:59:48浏览次数:65  
标签:函数 err package Testing 单元测试 go test 测试 Go

使用Golang编程时,一般只有在写最终的main函数时我们才有机会调用某个函数进行测试,在大型项目中如果只负责编写某个非main模块时应当如何测试函数的可用性?

Golang提供了Testing模块,这个模块可以让我们随时随地进行函数功能验证。

testing - The Go Programming Language (golang.org)

示例:

假设某个名为anytest的Package目录下有如下的正常业务逻辑:

package anytest

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type JsonResponse struct {
    ...
}

func Call() error{
    resp,_ := http.Get("xxx")
    respBody,_ := ioutil.ReadAll(resp.Body)
    defer resp.Body.Close()
    jsonResp := new(JsonResponse)
    if err := json.Unmarshal(respBody, jsonResp); err != nil {
        return err
    }
    fmt.Println(jsonResp.Stores)
    return nil
}

然后我们创建anytest_test.go用于测试包内的某些函数或方法(必须以_test.go结尾,前缀随意彰显目的即可):

package anytest //同一package中

import (
    "testing"
)

func TestCall(t *testing.T)  { //必须以Test开头,推荐以Test_开头,后缀一般使用被测试的函数名标识
    err := Call()
    if err != nil {
        t.Error(err)    //testing.T自带log类打印方法
    }
}

进行测试:

// 建议在对应package目录下执行对应package的go test
1. 测试本目录下所有test.go文件
go test 

2. 测试某个test.go文件(注意必须添加./的路径前缀,否则会把文件名当函数名去匹配)
go test -v -run ./my_test.go

3. 测试某个Test函数(会遍历package目录下所有test.go文件找到对应的函数)
go test -v -run Test_mytest

 

标签:函数,err,package,Testing,单元测试,go,test,测试,Go
From: https://www.cnblogs.com/realcp1018/p/16925586.html

相关文章

  • go源码学习(零):前置知识-编译过程
    编译原理-从源码到机器码任何一门高级语言,要想最终能够在机器上执行那么就一定要从源码生成机器码,因为对于机器来说,它只认同由0和1组成的二进制程序。从人类可读的源码到......
  • 14、go的反射
    基本数据类型反射//利用函数的参数定义为空接口functestRefect(iinterface{}){ //调用TypeOf函数,返回reflect.Type类型的数据 reType:=reflect.TypeOf(i) fmt......
  • 13、go的TCP网络编程
    创建客户端funcmain(){ //所需的网络编程全都在net包下 conn,err:=net.Dial("tcp","127.0.0.1:8888") fmt.Println("客户端启动") iferr!=nil{//连接失......
  • 12、go的协程和管道
    协程概念又称微线程,纤程,协程是一种用户态的轻量级线程作用:在执行A函数时候,可以随时中断,去执行B函数,然后中断继续执行A函数(可以自动切换),这一切换过程并不是函数调用(没有调......
  • 11、go的文件操作
    文件创建一个测试文件代码测试:funcmain(){ //打开文件 file,err:=os.Open("E:/test/Test.txt") iferr!=nil{//err不为空,说明报错 fmt.Println("文件......
  • 10、go的面向对象
    结构体结构体的定义//定义结构体,老师的结构体,各个属性统一放入结构体管理typeTeacherstruct{ //变量名大写开头外界可以访问 Namestring Ageint Scho......
  • 9、go的map
    map引入funcmain(){ //定义map varamap[int]string //只声明map内存是没有分配空间的,必须通过make函数进行初始化 a=make(map[int]string,10)//如果不指......
  • Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
    摘要:一、问题:      数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。 二、解决方案:   1.通过高速服务器Cache......
  • MongoDB - 事务支持
    事务简介事务是数据库中处理的逻辑单元,每个事务中包括一个或多个数据库操作,既可以是读操作,也可以是写操作。ACID是一个“真正”事务所需要具备的一组属性集合,指的是原子......
  • centos 7 YUM 安装mongodb 3.4
    第一步查看是否存在Mongodb配置yum源切换到yum目录cd/etc/yum.repos.d/查看文件ls第二部不存在添加yum源创建文件touchmongodb-3.4.repo编辑该文件vimongodb-3.4.......