Golang单元测试技术栈并不复杂:
1. Golang标准库提供的"testing"包
2. GoConvey
3. GoStub
4. GoMock
5. Monkey
其中,Golang标准库提供的"testing"包主要用来。
关于gomonkey,我并无好感,主要原因如下:
- gomonkey的原理稍微hacking一点,简单而言它是在程序运行时,利用long jmp技术实现对目标函数调用的劫持,这也导致我怀疑它性能并不优秀。
- 在mac系统的安全审计下,它的“预谋”并不能“得逞”,运行时会报错。
为此我专门开发了多个单元测试case,对比它和利用gomock技术开发的单元测试的性能差异。