go 为方便单元测试的函数
来源:互联网 发布:2016网络歌曲打包下载 编辑:程序博客网 时间:2024/05/18 03:46
写go语言程序,在单元测试时,经常需要比较两个值是否相等,比较一个值是否为nil,或者是否抛出了panic。分别写了如下三个函数来进行判断。具体应用时,可以根据实际情况进行调整。
func verify(t *testing.T, fun string , output, expected interface{}){ if output != expected { t.Errorf( "%s: output %v != %v", fun, output, expected) } }func verifyNil(t *testing.T, fun string , output interface{}){ v := reflect.ValueOf(output) if v.IsValid() && !v.IsNil() { t.Errorf( "%s: output %v is not nil", fun, output) } }func verifyPanic(t *testing.T, fun string , errType interface{}, expectedMsg string){ msgFeild := "Message" e := recover() if e == nil { t.Errorf( "%s: expected error [%T], but a nil!", fun, errType) return } if reflect.TypeOf(errType) != reflect.TypeOf(e) { t.Errorf( "%s: expected error [%T], but [%T]!", fun, errType, e) return } errMsg := reflect.ValueOf(e).Elem().FieldByName(msgFeild) if errMsg.String() != expectedMsg { t.Errorf("%s: expected error message [%s], but [%s]!", fun, expectedMsg, errMsg) return }}
1. 判断两个值是否相等,如下代码:
verify(t, "TestStateMachine 1", sm.GetCurrentState().ID(), "s2")sm.SendEvent(e2)verify(t, "TestStateMachine 2", sm.GetCurrentState().ID(), "s3")sm.SendEvent(e3)verify(t, "TestStateMachine 3", sm.GetCurrentState().ID(), "s1")
为了区分是在哪儿没有测试通过,在传入参数名时,加了序号。
2. 判断一个值是否为nil,如下代码:
verifyNil(t, "TestStart 1", sm.GetCurrentState())verifyNil(t, "TestStart 2", sm.GetEvent())
3. 判断是否抛出了panic,如下代码:
expected := "Has no action executor for [ao2]."defer verifyPanic(t, "TestHasNoActionExecutor", (*IllegalActionError)(nil), expected)
抛出panic处的代码如下:
panic(&IllegalActionError{"Has no action executor for [" + execName + "]."})
0 0
- go 为方便单元测试的函数
- GO 的单元测试
- LiteIDE 编写Go的单元测试
- Go-单元测试
- go 单元测试
- Go 单元测试
- 【Go学习】Go的函数
- 单元测试函数的编写
- 一个比较方便的转换NSString为UTF8编码的函数
- 一个比较方便的转换NSString为UTF8编码的函数
- 一个比较方便的转换NSString为UTF8编码的函数
- 一个比较方便的转换NSString为UTF8编码的函数
- 前端接口服务器的文字性整理,方便写单元测试
- gopkg:一种方便的go pakcage管理方式
- GO函数的使用
- Go起步:8、Go的函数
- go语言单元测试demo
- Go语言-单元测试
- Java中Socket通信的基本方法
- 打印月历题解
- 网络请求获取新版本信息并显示dialog
- 转载的一篇整型溢出的文章
- 集训队专题(2)1002 Tr A
- go 为方便单元测试的函数
- cocos2d-x-3.8.1 WP8 竖屏解决办法
- Gesture控制图片缩放&Canvas: trying to use a recycled bitmap android.graphics.Bitmap异常
- 内容提供器--学习笔记(1)
- JavaScript跨浏览器处理事件方法(封装成对象)
- BestCoder Round #70 Jam's store(网络流)
- 集训队专题(2)1003 Matrix Power Series
- 关于webp图片格式初探
- 九宫格CCScale9Sprite的使用二