知识卡片

集成测试的数据清除应放在准备数据之前

普通读书笔记卡 · 1978.at

内容

集成测试会被反复运行,每个测试用例需要的数据都应彼此独立。数据清除本该由JUnit的teardown钩子负责,但运行集成测试后通常需手工查询数据库以了解被测方法执行后的数据结果;若在测试方法执行后就teardown清除数据,就无法查看执行后的结果了。为避免此情形,可以把数据清除挪到准备数据之前——清除数据与准备数据的实现都放在setup钩子中。此外,系统用flywaydb管理数据库版本与数据迁移,但集成测试需要的数据不在此列、需由测试自行提供。发散:把清理放 setup 而非 teardown 是一个反直觉但实用的技巧——它牺牲了测试间的即时整洁,换来失败后可现场勘查数据的能力。

参考来源

- 位置:《解构领域驱动设计》第20章 20.3.5(源文件:_epub-src/OEBPS/033.xhtml) - 结论依据:原文说明为便于测试后查库,把数据清除从teardown挪到setup准备数据之前。 - 原始内容:为避免此情形,可以将数据的清除挪到准备数据之前。如上述测试代码所示,清除数据与准备数据的实现都放到了setup钩子方法中。