聚焦位于测试包内的测试代码该如何组织
41.1 经典模式—平铺
测试函数各自独立,测试函数之间没有层级关系,所有测试平铺在顶层
41.2 Unit家族模式
测试套件(Test Suite)和测试用例(Test Case)
41.3 测试固件
测试固件是一个人造的、确定性的缓解,在这个环境中进行测试,测试结果是可重复的
一般使用setUp和tearDown来表示测试固件的创建/设置与销毁/拆除
- Go 1.14版本testing包增加来testing.Cleanup方法,为测试固件的销毁提供了包级别原生的支持
- Go 1.4版本引入了TestMain,使得包级别测试固件的常见和销毁有了正式的施展舞台
常见场景:
- 将一组已知数据加载到数据库中,测试结束后清除这些数据
- 复制一组特定的文件,测试结束后清除这些文件
- 常见伪对象(fake object)或模拟对象(mock object),并为这些对象设定测试时所需的特定数据和期望结果