单元测试
(大部分根据网文整理)
# 目的
- 提高代码完整性
- 便于代码维护
# 相关概念
- 单元测试:
- 通过代码检验各个函数和方法的输入输出是否正确执行。
# 使用
特性
- 测试过程自动执行,使用
assert
来验证,执行结果输出到文档。 - 单元测试相互独立,用例之间绝不能互相调用,也不能依赖执行的先后次序。
- 测试粒度足够小,有助于精确定位问题;单元测试粒度至多是类级别,一般是方法级别;单元测试不负责检查跨类或者跨系统的交互逻辑。
- 核心业务、核心应用、核心模块的增量代码务必确保单元测试通过;新增代码及时修正单元测试。
- 单元测试代码必须写在特定的
test
工程目录中,不允许写在业务代码目录下。
遵守原则
- 边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。
- 正确的输入,并得到预期的结果。
- 与设计文档相结合,来编写单元测试。
- 强制错误信息输入(如:非法数据、异常流程、非业务允许输入等),并得到预期的结果。
- 对于数据库相关的查询,更新,删除等操作,不能假设数据库里的数据是存在的,或者直接操作数据库把数据插入进去,请使用程序插入或者导入数据的方式来准备数据;避免导致测试结果异常。
- 和数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据;或者对单元测试产生的数据有明确的前后缀标识。
优点
- 单元测试能够最大限度地规避线上故障。
缺点
- 单元测试代码需要维护,更改业务代码都需要调整相应的单元测试代码。