以写作调身心

Go test单元测试小技巧

起因

周五在做go test测试时,碰到个问题,我要对一个xxx函数写测试样例,然而它的首字母是小写的,没有导出,单元测试过不去,而这个xxx函数外面还有一个YYY函数首字母是大写的,但要经过很长的逻辑才能到xxx函数。这时我又要完成对xxx函数进行测试,又不想经过YYY函数走逻辑,该怎么办呢?

实现过程

首先,绝对不能做的事:

  • xxx函数改为首字母大写的Xxx函数
    原因:很多地方都在调这个函数,你改了这一处只满足你这次的测试,那其他基本业务流程也就崩了。

我目前是在test文件夹里新建了一个xxx_test.go测试文件,样子长这样

package test

func Testxxx(t testing.T){
    control.XXX()
}

由于xxx函数是在control包里,因此我要在control包下建一个export.go文件

package control

var XXX = xxx

然后执行go test命令,它会遍历control包下的所有文件,这时export.go文件 里的var XXX = xxx就起到了一个桥梁作用。

这时测试的时候就不需要再经过YYY的逻辑走到xxx函数里面。

参考文章

付费用户「每日一学」2019-06-14:你应该知道的单元测试小技巧

评论