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 会调用两个函数进行测试,它是正则匹配的
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
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包裹一遍,如果是新增的事件
随机推荐
- angularJs中datatable实现代码
- JavaScript实现自动弹出窗口并自动关闭窗口的方法
- perl数据库添加、删除、更新、查询操作例子
- Ruby设计模式编程之适配器模式实战攻略
- 关于HTML及UBB标记的闭合
- linux中目录与路径常见相关命令
- 应用Java泛型和反射导出CSV文件的方法
- 改变JSP的文件后缀
- 这年头小偷真是太强了(经典)
- C++中的friend友元函数详细解析
- 简介Redis中的showlog功能
- java 将方法作为传参--多态的实例
- 当前流行的JavaScript代码风格指南
- 详解Spring中实现接口动态的解决方法
- 常用注册表设置
- java String[]字符串数组自动排序的简单实现
- ANDROID中使用VIEWFLIPPER类实现屏幕切换(关于坐标轴的问题已补充更改)
- SpringMVC 单文件上传与多文件上传实例
- 详解shell中source、sh、bash、./执行脚本的区别
- Spring boot中PropertySource注解的使用方法详解