📘 单元测试·TDD实战 30章

⚡ Kotlin · Android · 红绿重构
为什么需要单元测试 红-绿-重构循环 测试金字塔 Android测试分类
JUnit5配置 AssertJ/Hamcrest 参数化测试 生命周期·命名规范
需求→测试→实现→重构 计算器完整流程
Mock vs Spy when-thenReturn verify ArgumentMatcher Answer接口
静态方法Mock 构造方法Mock Partial Mock BDDMockito 陷阱与最佳实践
runBlockingTest TestCoroutineDispatcher TestScope 超时测试 Flow测试
LiveData测试规则 InstantTaskExecutorRule ViewModel单元测试 StateFlow测试
内存数据库配置 DAO测试 Migration测试 Paging3测试 最佳实践
Fake vs Mock 网络+本地数据源 缓存策略测试 错误处理测试
纯业务逻辑测试 依赖注入测试 异常路径覆盖 边界条件测试
Espresso基础 onView/onData RecyclerView测试 自定义Matcher
ComposeTestRule semantics测试 状态驱动UI测试 动画测试
NavController测试 DeepLink测试 返回栈测试 导航图验证
Hilt测试配置 测试模块 @BindValue @UninstallModules 自定义测试组件
OkHttp MockWebServer Retrofit测试 拦截器测试 网络错误模拟 超时测试
临时文件系统 SharedPreferences测试 DataStore测试 加密存储测试
TestListenableWorker WorkManagerTestInitHelper 约束条件测试 周期性任务测试
Receiver测试 Service测试 Intent验证 权限测试
Provider测试 CRUD操作验证 URI匹配测试 权限测试
基准测试库 方法耗时测试 内存泄漏检测 ANR检测 启动时间测试
JaCoCo配置 覆盖率报告解读 增量覆盖率 覆盖率门禁 覆盖率陷阱
安全重构步骤 测试保护网 提取方法/类 依赖倒置 设计模式与可测试性
Characterization测试 黄金Master测试 依赖解耦 测试缝 逐步改进策略
模块间依赖测试 公共测试模块 测试变体 模块化测试策略
GitHub Actions配置 Gradle测试任务 测试报告聚合 并行测试 Flaky测试处理
Espresso与Barista Screenshot测试 多设备测试 云测试平台集成
Builder模式 ObjectMother 测试数据生成器 随机测试数据 边界值生成
脆弱的测试 慢测试 重复测试 测试与实现耦合 过度Mock 测试代码坏味道
登录模块TDD 购物车TDD 搜索功能TDD 推送通知TDD
团队测试规范 Code Review中的测试 测试金字塔落地 度量与改进 持续学习路径