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.
语义重复
相同功能,不同实现
条件逻辑
Bad eg.
Good eg.
脆弱的测试
残缺的文件路径
永久的临时文件
沉睡的蜗牛
像素完美
参数化混乱
方法间缺内聚
可信赖
注释掉的测试
歧义注释
永不失败
轻率承诺
降低期望
平台偏见
有条件的测试
第三部分:消遣
可测试的设计
What?
可测性问题
没办法
实例化
类
调用
方法
观察
输出
替换
协作者
覆盖
方法
可测设计
小心 new
避免
复杂的私有方法
final 方法
static 方法
构造器
逻辑
单例
服务查找
建议
组合
优于继承
外部库
封装
其他JVM语言
加速执行
追求速度
加速测试代码
Thread.sleep()
基类膨胀
setup/teardown无效?重复?
挑剔Add
新测试代码
本地运行
网络
Database
文件IO
关闭日志
加速构建
0 条评论
下一页
为你推荐
查看更多