go语言测试框架Convey+Monkey的使用

go语言有很多的测试框架,但是个人感觉还是Convey+Monkey的使用比较简单方便,Convey作为外部框架,monkey可以为函数和方法进行打桩。
一个简单的示例来说明如何对函数进行打桩
示例:

func Readfile(filename string, m interface{}) error{ _,err := ioutil.ReadFile(filename) if err != nil { fmt.Println("readfile:[%s] error:[%s]", filename, err.Error()) return err } return nil }

Readfile函数中调用了ioutil.ReadFile,假设要对该函数写UT测试用例的话,不可避免就要对其进行打桩,因为系统不存在要读取的filename文件,自然读取不到数据。
func TestReadfile(t *testing.T){ Convey("Teststring2json",t, func() { filename := "" m := []interface{}{} pathes := applyfunc(ioutil.ReadFile, func(_ string) ([]byte, error) { return []byte{},nil }) defer pathes.Reset() err := Readfile(filename , m) So(err,shouldBeNil) }) }

因为filename不存在,不可避免的ioutil.ReadFile(filename)返回的err != nil,那么return 的必然是err的错误信息,打桩之后,给他返回来的就是nil,那么执行的就是return nil
【go语言测试框架Convey+Monkey的使用】其实,打桩的目的就是不关注需要打桩函数的具体执行调用过程,将全部的精力放在自己当前所写的函数之上。

    推荐阅读