培训对象: 面向开发工程师、测试开发工程师及技术负责人。也适合需要提升代码质量、降低缺陷率、建立TDD开发模式的团队技术人员。
培训目标: 深入理解单元测试的价值与测试驱动开发的思想,掌握JUnit、Mockito、AssertJ等主流测试框架的使用。具备编写高质量单元测试、运用TDD方法进行需求开发的能力,构建可测试、高内聚的软件模块。
培训内容介绍:
单元测试基础与价值:学习单元测试的定义与目的,理解单元测试对代码质量、重构安全及缺陷预防的核心价值,破除常见误区。
测试金字塔与策略:掌握测试金字塔模型(单元测试、集成测试、端到端测试的比例与定位),学习不同层次的测试策略选择。
JUnit5核心特性:深入讲解JUnit5的架构与注解(@Test、@BeforeEach、@AfterEach、@BeforeAll、@AfterAll),掌握断言(Assertions)与假设(Assumptions)的使用。
参数化测试:学习@ParameterizedTest的多种数据源(@ValueSource、@CsvSource、@MethodSource),实现单测用例的多样化覆盖。
Mockito模拟依赖:掌握Mockito的核心用法(@Mock、@InjectMocks、when/thenReturn、verify),解决外部依赖(数据库、外部服务)对单元测试的干扰。
AssertJ流式断言:学习AssertJ的流式断言风格,掌握集合、异常、时间等复杂对象的断言技巧,提升测试代码的可读性。
测试覆盖率与工具:了解代码覆盖率的概念与指标(行覆盖、分支覆盖、方法覆盖),学习使用JaCoCo生成覆盖率报告,设定合理的覆盖率目标。
测试驱动开发概述:学习TDD的红-绿-重构循环,理解TDD对设计质量的提升作用,掌握TDD的适用场景与注意事项。
TDD实战演练(基础):通过FizzBuzz或计算器案例,演练TDD的全过程:先写失败测试、再写最小实现、最后重构优化。
TDD实战演练(业务):以订单金额计算或用户注册功能为例,演练复杂业务逻辑的TDD开发,学习如何通过测试驱动设计。
遗留代码的单测策略:学习为遗留代码添加单元测试的渐进策略,掌握通过重构提高可测试性的技巧。
单元测试最佳实践:总结FIRST原则(Fast、Independent、Repeatable、Self-Validating、Timely),学习测试代码的维护规范。