{C#-05} 单测的逻辑
2020-10-02 本文已影响0人
码农猫爸
背景
- 单测未写,理论先行
手动测试的痛点
- 混为集成测试(ex. 切换窗体|访问数据库),BUG难定位
- 环境依赖,ex.数据库|平行开发的模块
- 速度慢,因准备环境+人工干预
- 覆盖率低,脑子不够用=各种关联+上千种方法情形
- 维护时,以上困难再重复n遍
单测的优势
- 自动测试,快速跑完所有预设
- 定位不符合项
- 倒逼更清晰的代码职责
单测的劣势
- 学费1,写测试代码,生产代码兼顾测试规范
- 学费2,学习新框架,ex. Moq(模拟用)|Xunit(测试用)
- 非万能,无法消灭BUG
- 难平衡,太简单无意义,太复杂成本飙升
对象
- 单测是最小单元测试的简称,即零件级检验
- 主要测试对象是方法或属性等
- 不单测系统库,他人库
- 不单测过桥(仅调用,不加工)方法或属性
常见问题
- 依赖替换
- 注入(interface|class with public virtual):生产代码简洁,需接口定义和传参。
- 聚合(protected virtual):生产代码冗余,模拟时需手动关联等。
- 详见 https://www.jianshu.com/p/d1e1904c119e
- 复合方法Fx() = Fa() + Fb() + Fc()
- 复杂对象比较器 ex. datatable