Java 单元测试 & 集成测试 · 实战手册

📘 30 章完整目录
01 单元测试入门
  • 什么是单元测试
  • 为什么需要单元测试
  • JUnit 5 环境搭建与第一个测试用例
02 JUnit 5 核心注解
  • @Test、@BeforeEach、@AfterEach
  • @BeforeAll、@AfterAll
  • 生命周期与执行顺序
03 断言机制
  • assertEquals / assertTrue / assertFalse
  • assertNull / assertThrows
  • 常用断言方法详解
04 测试套件与执行顺序
  • @Suite / @Order / @TestMethodOrder
  • 组织大型测试集
05 参数化测试
  • @ParameterizedTest / @ValueSource
  • @CsvSource / @MethodSource
  • 数据驱动测试
06 重复测试与条件测试
  • @RepeatedTest / @Disabled
  • @EnabledOnOs / @EnabledIf
  • 条件注解
07 Mock 框架入门
  • 为什么需要 Mock
  • Mockito 核心概念
  • Mock 与 Spy 的区别
08 Mockito 基础用法
  • when().thenReturn() / doThrow()
  • verify() 模拟依赖行为
09 Mockito 高级特性
  • ArgumentMatchers / Answer 接口
  • @InjectMocks 自动注入
10 PowerMock 与静态方法 Mock
  • 处理静态方法 / 构造函数
  • final 类 Mock 难题
11 测试覆盖率
  • JaCoCo 插件配置
  • 行覆盖率 / 分支覆盖率
  • 解读覆盖率报告
12 Spring Boot 单元测试
  • @SpringBootTest / @WebMvcTest
  • @DataJpaTest 切片测试
13 Controller 层测试
  • MockMvc 的使用
  • GET/POST 请求模拟
  • JSON 响应验证
14 Service 层测试
  • 隔离测试 Service 逻辑
  • Mock Repository 依赖
15 Repository 层测试
  • @DataJpaTest / 嵌入式数据库 H2
  • 测试数据准备
16 集成测试入门
  • 什么是集成测试
  • 与单元测试的区别
  • 集成测试策略
17 数据库集成测试
  • Testcontainers 框架
  • Docker 容器化数据库测试
18 REST API 集成测试
  • RestTemplate / WebTestClient
  • 端到端接口验证
19 消息队列集成测试
  • 测试 Kafka/RabbitMQ 生产者消费者
  • Embedded Kafka
20 缓存集成测试
  • 测试 Redis 缓存逻辑
  • @Cacheable / @CacheEvict 验证
21 安全集成测试
  • Spring Security 测试
  • 模拟认证用户 / 测试接口权限
22 文件与外部服务集成测试
  • 模拟文件上传下载
  • Mock 外部 HTTP 服务 (WireMock)
23 测试数据管理
  • @Sql 注解 / 测试数据工厂
  • Builder 模式构建测试对象
24 性能测试基础
  • JMH 微基准测试
  • 简单性能断言 / 避免陷阱
25 契约测试入门
  • Spring Cloud Contract 基础
  • 消费者驱动契约测试
26 测试金字塔与策略
  • 测试金字塔理论
  • 平衡单元/集成/E2E 测试比例
27 持续集成中的测试
  • Jenkins/GitHub Actions 配置
  • 测试阶段自动化 / 失败分析
28 测试报告与可视化
  • Allure 报告框架
  • 测试结果聚合 / 历史趋势
29 遗留系统测试策略
  • 为老项目添加测试
  • Characterization Test / 重构安全网
30 测试驱动开发 (TDD)
  • 红绿重构循环
  • TDD 实战案例 / 常见误区与最佳实践