golang 对私有函数进行单元测试的实例

在待测试的私有函数所在的包内,新建一个xx_test.go文件

书写方式如下:

import (
 "github.com/stretchr/testify/assert"
 "testing"
)
var XXFunc = yourPrivateFunc
func TestXXFunc(t *testing.T) {
 ret, ... := XXFunc(...)
 assert.Equal(t, ret, ...)
}

就可以了~

补充:golang test使用(简单的单元测试)

1、测试单个文件,一定要带上被测试的原文件

go test -v  wechat_test.go wechat.go 

2、测试单个方法

go test -v wechat_test.go -test.run TestRefreshAccessToken

如果不指定文件名,会将当前目录的所有test方法进行测试

举例:

package main
import (
 "fmt"
 "testing"
)

func TestFmt1(t *testing.T) {//1 方法必须传入testing.T 2 方法名必须是以Test开头,驼峰命名
 fmt.Println("test1")
}
func TestFmt2(t *testing.T) {
 fmt.Println("test2")
}

go代码保存为 t_test.go //必须以_test.go作为结束

在此代码同级目录执行 :

go test -v t_test.go -test.run TestFmt2 会调用TestFmt2

如果执行:

go test -v t_test.go -test.run TestFmt 会调用两个函数进行测试,它是正则匹配的

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Golang单元测试与覆盖率的实例讲解

    1 概述 C/C++和Java(以及大多数的主流编程语言)都有自己成熟的单元测试框架,前者如Check,后者如JUnit,但这些编程框架本质上仍是第三方产品,为了执行单元测试,我们不得不从头开始搭建测试工程,并且需要依赖于第三方工具才能生成单元测试的覆盖率. 相比之下,Go语言官方则提供了语言级的单元测试支持,即testing包,而且仅通过go工具本身就可以方便地生成覆盖率数据,也就是说,单元测试是Go语言的自带属性,除了好好设计自己的单元测试用例外,开发者不需要操心工程搭建的任何细节.没错,G

  • golang 实现时间戳和时间的转化

    说实话,golang的时间转化还是很麻烦的,最起码比php麻烦很多,上码好好学学一下 package main import ( "time" "fmt" ) func main() { //获取当前时间 t := time.Now() //2018-07-11 15:07:51.8858085 +0800 CST m=+0.004000001 fmt.Println(t) //获取当前时间戳 fmt.Println(t.Unix()) //1531293019 /

  • golang值类型转换成[]uint8类型的操作

    在go语言中,byte其实是uint8的别名,byte 和 uint8 之间可以直接进行互转. 目前来只能将0~255范围的int转成byte. func Int64ToBytes(num int64) []uint8 { var buffer bytes.Buffer err := binary.Write(&buffer, binary.BigEndian, num) if err != nil { logs.Error("int64转[]uint8失败%v", err)

  • 深入理解Golang的单元测试和性能测试

    前言 大家做开发的应该都知道,在开发程序中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让线上的程序能够在高并发的情况下还能保持稳定.本小节将带着这一连串的问题来讲解Go语言中如何来实现单元测试和性能测试. go语言中自带有一个轻量级的测试框架testing和自带的go test命令来

  • Golang Gob编码(gob包的使用详解)

    gob是Golang包自带的一个数据结构序列化的编码/解码工具.编码使用Encoder,解码使用Decoder.一种典型的应用场景就是RPC(remote procedure calls). gob和json的pack之类的方法一样,由发送端使用Encoder对数据结构进行编码.在接收端收到消息之后,接收端使用Decoder将序列化的数据变化成本地变量. 基本使用 package main import ( "bytes" "encoding/gob" "

  • golang 监听服务的信号,实现平滑启动,linux信号说明详解

    监听服务的信号,实现平滑启动,linux信号说明 package main import ( "context" "fmt" "golang.org/x/sync/errgroup" "net/http" "os" "os/signal" "syscall" ) func main() { g, ctx := errgroup.WithContext(context.

  • golang 对私有函数进行单元测试的实例

    在待测试的私有函数所在的包内,新建一个xx_test.go文件 书写方式如下: import ( "github.com/stretchr/testify/assert" "testing" ) var XXFunc = yourPrivateFunc func TestXXFunc(t *testing.T) { ret, ... := XXFunc(...) assert.Equal(t, ret, ...) } 就可以了~ 补充:golang test使用(简

  • Python 私有函数的实例详解

    Python 私有函数的实例详解 与大多数语言一样,Python 也有私有的概念: • 私有函数不可以从它们的模块外面被调用 • 私有类方法不能够从它们的类外面被调用 • 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字. 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的:其它所有的都是公有的. Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中).类方

  • 跟老齐学Python之私有函数和专有方法

    在任何语言中,都会规定某些对象(属性.方法.函数.类等)只能够在某个范围内访问,出了这个范围就不能访问了.这是"公"."私"之分.此外,还会专门为某些特殊的东西指定一些特殊表示,比如类的名字就不能用class,def等,这就是保留字.除了保留字,python中还为类的名字做了某些特殊准备,就是"专有"的范畴. 私有函数 在某些时候,会看到有一种方法命名比较特别,是以"__"双划线开头的,将这类命名的函数/方法称之为"

  • golang内置函数len的小技巧

    len是很常用的内置函数,可以测量字符串.slice.array.channel以及map的长度/元素个数. 不过你真的了解len吗?也许还有一些你不知道的小知识. 我们来看一道GO101的题目,这题也被GO语言爱好者周刊转载: package main import "fmt" func main() { var x *struct { s [][32]byte } fmt.Println(len(x.s[99])) } 题目问你这段代码的运行结果,选项有编译错误.panic.32和

  • Golang字符串常用函数的使用

    目录 1)Golang字符串包含功能[区分大小写] 2)Golang ContainsAny()[区分大小写] 3)Golang Count() [区分大小写] 4)Golang EqualFold() [不区分大小写] 5) Golang Fields() 6)Golang FieldsFunc() 7)Golang HasPrefix() 8)Golang HasSuffix() 9)Golang Index() 10)Golang IndexAny() 11)Golang IndexByt

  • Delphi 根据字符串找到函数并执行的实例

    Delphi 根据字符串找到函数并执行的实例  关键字:MethodAddress:取得方法的地址,这个方法需要是published的. 实例代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TShowInfo = procedure(info:string) of object; //声

  • JavaScript学习小结之被嫌弃的eval函数和with语句实例详解

    前面的话 eval和with经常被嫌弃,好像它们的存在就是错误.在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被斥为不规范,矫枉过正.那关于eval和with到底是什么情况呢?本文将详细介绍eval()函数和with语句 eval 定义 eval()是一个全局函数,javascript通过eval()来解释运行由javascript源代码组成的字符串 var result = eval('3+2'); console.log(result,typeof result)

  • COM组件中调用JavaScript函数详解及实例

    COM组件中调用JavaScript函数详解及实例 要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度.这就要求使用回调函数,设其名称为scriptCallbackFunc.实现这个技术很简单: 1 .组件方(C++) 组件A 的方法在IDL中定义: [id(2)] HRESULT longCalc([in] DOUBLE v1, [in] DOUBLE v2, [in, optional

  • js匿名函数使用&传参(实例)

    如下所示: function () { alert("error"); } //报错:匿名函数不能直接调用 使用 0x01 (function () { alert("Success"); })()//直接使用 0x02 var anonymous=function () { alert("success"); } anonymous();//赋值调用 传参 0x01 (function (m,n) { return m+n; })(10,20)

  • 远离JS灾难css灾难之 js私有函数和css选择器作为容器

    尽管js可以想面向对象那样去构造对象,隐藏私有方法,但需求变化的往往比你写程序还要快时,就连设计js对象的时间也没有了,所以我比较倾向于用js私有函数和js方法:jquery私有函数和jquery对外暴露方法的形式也可以实现,而页面生成的html结构则完全在js中生成,包括哪些id和class, 这样可以最大限度的确保统一和重用的方便性,但也有个缺点,就是在重用时,如果需要样式发生变化(结构是死的不能变化),就需要用div将原来的结构包起来,相关的样式也需要用对应的id包裹一遍,如果是新增的事件

随机推荐