Java测试驱动开发
2021-05-06 19:45:41 0 举报
AI智能生成
《Java测试驱动开发》思维导图笔记
作者其他创作
大纲/内容
第一篇
Why TDD?
使用TDD理由
红灯-绿灯-重构
编写测试->运行测试->编写代码->运行测试->重构->运行测试->...
速度&节奏
分秒级
切换
测试->开发
乒->乓
设计方法
提供的功能
编写代码前
关注一项
测试
黑盒测试
优点
高效
大段代码
无需理解代码
用户角度
缺点
覆盖率低
效率低
针对性低
白盒测试
优点
高效
找问题
改进代码
覆盖率高
缺点
未实现的功能?
了解代码
耦合紧密
改动->不可用
警察综合征
其他
模拟
外部依赖
避免
文档
可执行
调试
工具、框架&环境
工具
Git
虚拟机
Ubuntu
Vagrant
Docker
Gradle
框架
单元测试
JUnit
TestNG
断言
Hamcrest
gradle依赖
PK JUnit
AssertJ
gradle依赖
PK JUnit
代码覆盖率
JaCoCo
gradle依赖
模拟
Mockito
gradle依赖
EasyMock
PowerMock
棘手对象
依赖代码
Web测试框架
Selenium
gradle依赖
常用&低级
Selenide
gradle依赖
基于Selenium
简化&易用
行为驱动
JBehave
gradle依赖
Cucumber
gradle依赖
第二篇
红灯-绿灯-重构
过程
编写测试
测试不通过
编写实现
运行测试
重构
Junit
初始/销毁
静态
@BeforeClass
@AfterClass
实例
@Before
@After
@Rule
@Test
方法名
@Ignore
单元测试
单元测试
what
对每个隔离的小型代码单元(方法)进行测试。
why
PK 功能or系统测试
用时少
发现快
修复快
重构
可读性
复杂度
易维护、扩展
不止UT
单元测试
外部依赖
模拟
代码质量
功能测试
客户角度
完整性
系统测试
TestNG
初始/销毁
@BeforeSuite/@AfterSuite
@BeforeGroups/@AfterGroups
@BeforeTest/@AfterTest
@BeforeClass/@AfterClass
@BeforeMethod/@AfterMethod
@Test
@Test(enable = false)
@Test(expectedExceptions = RuntimeException.class)
可测试设计
设计原则
你不需要它
专注于当前而非未来的功能。
不要自我重复
保持简单
奥卡姆剃刀原理
选择最简单的
SOLID
单一职责
一个类应该只有一个导致它需要修改的原因。
开-闭原则
类应该对扩展开放,对修改封闭。
里氏替换
类应该能被其扩展类替换。
接口分离
多个具体接口胜过单个通用接口。
依赖倒转
类应该依赖于抽象而不是实现。
第三篇
模拟
模拟对象
优点
变化
不存在
耗时
术语
哑元对象(dummy object)
测试存根(test stub)
测试间谍(test spy)
模拟对象(mock object)
伪造对象(fake object)
示例
要点
测试应能快速运行
仅当所有测试都通过,才编写新测试
模拟切入点
getCollection()
Matchers
org.mockito.Matchers.any()
限制
多参数一个模糊->All模糊
org.hamcrest.Matchers.any()
BDD-团队协作
重构遗留代码
第四篇
功能开关
综述
0 条评论
下一页