Golang单元测试技术栈并不复杂:

                 1. Golang标准库提供的"testing"包

                 2. GoConvey

                 3. GoStub

                 4. GoMock

                 5. Monkey

        其中,Golang标准库提供的"testing"包主要用来。

关于gomonkey,我并无好感,主要原因如下:

  1. gomonkey的原理稍微hacking一点,简单而言它是在程序运行时,利用long jmp技术实现对目标函数调用的劫持,这也导致我怀疑它性能并不优秀。
  2. 在mac系统的安全审计下,它的“预谋”并不能“得逞”,运行时会报错。

为此我专门开发了多个单元测试case,对比它和利用gomock技术开发的单元测试的性能差异。