单元测试生成
生成覆盖正常路径、边界与失败的单元测试,带强断言。
测试与审查入门
为什么
GitHub 2024 调查发现 92% 的美国受访者用 AI 编程工具生成测试用例,98% 的组织曾尝试用 AI 做测试。好单测捕获回归并文档意图。
AI 快速生成,但仅当要求边界与精确值断言而非'不抛'时才有用。
何时使用
任何非平凡函数用此。平凡 getter/setter 跳过。
如何做
1. 给函数 + 类型 + 示例调用。
2. 问:"先列边界;然后每情况一测试带精确值断言"。
3. 要求:正常路径、各边界、各失败模式。
4. 跑覆盖率;对未覆盖分支要测试。
5. 拒绝 "not.toThrow" 断言 — 要精确值。
示例
fn: parseAge(input: string): number | null
边界:""、"abc"、"-5"、"999"、" 42 "、"0"、"2.5"
测试:
expect(parseAge("42")).toBe(42);
expect(parseAge("abc")).toBeNull();
expect(parseAge("-5")).toBeNull(); // 等
覆盖率 100%;文件中无 "not.toThrow"。
常见问题
- ⚠仅正常路径:要求边界 + 失败情况。
- ⚠错误:"Test timed out after 5000ms" → 调大 `testTimeout` 或 await 异步操作;网络调用常见。
- ⚠AssertionError: expected undefined to equal 'x' → mock 返回了 undefined;检查 mock 设置返回预期结构。
最佳实践
- ✓写测试前枚举边界。
- ✓断言精确返回值,非仅不抛。
- ✓用具体指标衡量结果(节省时间、缺陷率、测试覆盖率),使实践可被论证和改进。
常见问题解答
什么是单元测试生成?
生成覆盖正常路径、边界与失败的单元测试,带强断言。 它可帮助开发者快速理解 单元测试生成 的核心价值与适用场景。
如何开始使用单元测试生成?
开始使用 单元测试生成,建议先掌握以下要点:给函数 + 类型 + 示例调用。
单元测试生成 的常见误区有哪些?
使用 单元测试生成 时常遇到的问题包括:仅正常路径:要求边界 + 失败情况。;错误:"Test timed out after 5000ms" → 调大 `testTimeout` 或 await 异步操作;网络调用常见。;AssertionError: expected undefined to equal 'x' → mock 返回了 undefined;检查 mock 设置返回预期结构。。
单元测试生成 的最佳实践是什么?
单元测试生成 的最佳实践包括:写测试前枚举边界。;断言精确返回值,非仅不抛。;用具体指标衡量结果(节省时间、缺陷率、测试覆盖率),使实践可被论证和改进。。
如何深入学习单元测试生成?
从官方文档入手,再在 GitHub 上搜索真实示例;先在小实验仓库验证模式,再应用到生产代码。