Loading

Go语言精进之路读书笔记第41条——有层次地组织测试代码

聚焦位于测试包内的测试代码该如何组织

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),并为这些对象设定测试时所需的特定数据和期望结果

总结:

  • 简单的测试可采用平铺模式
  • 复杂的测试可借鉴xUnit的最佳实践,利用subtest建立包、测试套件、测试用例三级的测试代码组织形式,并利用TestMain和testing.Cleanup方法为各层次的测试代码建立测试固件
posted @ 2024-03-01 12:44  brynchen  阅读(5)  评论(0编辑  收藏  举报