用途:该技能指导以务实方式开展测试驱动开发:默认集成测试、真实依赖优先于 mock、写刚好足够的测试来建立信心。适用于编写代码、修复缺陷或用户提到测试、TDD 等场景。
主要能力:强调先写测试再写代码,默认选择集成测试,倾向于触碰真实边界(数据库、文件系统、API),避免过度 mock,测试行为而非实现细节。提出“两 mock 上限”:若需要超过 2 个 mock,应改写集成测试。提供测试类型选择决策逻辑:纯函数无依赖用无 mock 单元测试;具备依赖注入且只有 1-2 个简单依赖用 fake/stub 单元测试;触及数据库/API/文件系统用真实资源集成测试;CLI 命令调用真实二进制做集成测试;不确定时选集成测试。
使用方式:遵循红-绿-重构循环:先写失败测试并确认失败,再实现代码使其通过,最后重构。做变更时为新增行为写测试,确认既有测试仍通过,再实现变更,保持全部测试通过。测试结构上,一个测试可验证同一操作的多项相关行为(状态、数据转换、持久化、副作用),避免人为拆分成多个测试;同时覆盖错误情况。
可接受的 mock 场景:不受控的第三方 API、支付网关等应使用可控的薄封装;时间相关行为通过时钟接口注入;随机/UUID 等非确定性操作用注入生成器;网络超时、磁盘满等难以复现的错误专门测试错误路径。推荐使用内存实现(如 InMemoryRepository)和 stub 数据等 fake,而非验证调用序列的完整 mock。
限制与注意:不提供具体安装命令、运行环境要求或兼容性信息(暂未提供)。资料未说明支持的编程语言范围,示例代码为 Go 风格;未提及价格、平台或效果数据。核心原则“少即是够”:写能带来信心的最少测试,既不人为拆分测试,也不把不相关行为合并。常见陷阱包括为追求“单元测试更快”而 mock 一切、测试实现细节、每个测试仅一个断言、先写代码后写测试、对“简单”变更跳过测试。