Effective Unit Test
2021-05-06 19:47:14 0 举报
AI智能生成
《Effective Unit Test》思维导图笔记
作者其他创作
大纲/内容
双稳态定律
100%覆盖
发现早
Bug成本低
可读性
可靠性
可信赖性
提升
反馈环
调试
降低
测试代码
like
生产代码
测试
开发工具
双稳态
测试的价值
[测试]->[开发]->[重构]
代码的设计和API适合于你的使用场景
代码可用
生产代码仅仅实现场景所需要的功能
代码精益
后果
测试驱动开发
“行为”
“测试”
行为驱动开发
作为开发工具
测试承诺
代码
Test
可读->可维护
大脑理解
分而治之
抽象层级
小而美
有意义的结构
given-when-then
验证承若
测试方法名
时间
随机数
并发性
基础设施
现存数据
持久化
网络
小心
测试替身
相同package
自己生产
依赖资源
内存数据库
同步验证异步
方案
依赖
顺序
独立的测试
专业工具
寻求优秀
被测试代码
隔离
加速
执行
确定
网络异常?
特殊场景
模拟
隐藏信息
暴露
做什么
测试桩Stub
伪造对象Fake
测试间谍Spy
模拟对象Mock
类型
Stub?Fake?Spy?Mock?
挑选替身
给定->当->那么
准备->执行->断言
实现
检查行为
JMock
Mockito
挑选工具
setConnect(conn)
getConnect()
模拟对象-注入->测试对象
注入依赖
指南
第一部分:基础
没有意义
基本
一个测试应该只有一个失败的原因
过度
按位
断言
数据初始化+断言细节--混在一起
附加细节
一个测试方法内有多个测试
人格分裂
过度分散,增加认知负担
若短小,则内联之
若过长,则数据构建器
仅必要的数据
相同package下
若不便,则文件
何时内联数据?
逻辑分割
方法粒度
魔法数字
冗长安装
过度保护
突出
Bad eg.
Good eg.
结构重复
相同功能,不同实现
语义重复
重复
条件逻辑
脆弱的测试
残缺的文件路径
永久的临时文件
沉睡的蜗牛
像素完美
参数化混乱
方法间缺内聚
可维护性
注释掉的测试
歧义注释
永不失败
轻率承诺
降低期望
平台偏见
有条件的测试
可信赖
第二部分:目录
What?
类
实例化
方法
调用
输出
观察
协作者
替换
覆盖
没办法
可测性问题
小心 new
复杂的私有方法
final 方法
static 方法
逻辑
构造器
单例
服务查找
避免
优于继承
组合
封装
外部库
建议
可测设计
可测试的设计
其他JVM语言
追求速度
Thread.sleep()
setup/teardown无效?重复?
基类膨胀
新测试代码
挑剔Add
本地运行
Database
关闭日志
文件IO
加速测试代码
加速构建
加速执行
第三部分:消遣
Effective Unit Test
0 条评论
下一页