大模型应用
写测试或审查测试代码时,用 34…
在编写单元/集成测试、审查测试质量、改进覆盖率策略或搭建测试基础设施时,按优先级应用测试最佳实践。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 46/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 44/100 ×0.15
适用场景
写测试或审查测试代码时,用 34 条规则通用
解决思路
- 按优先级组织测试规则:测试结构(CRITICAL)、测试隔离(CRITICAL)、断言(HIGH)、测试数据(HIGH)、Mock(MEDIUM)、覆盖率(MEDIUM)、性能(LOW)。
- 测试结构:使用 AAA(Arrange、Act、Assert)模式组织每个测试。
- 测试结构:使用描述性测试名称,说明行为与场景,例如 `it('throws ValidationError when email is invalid')`。
- 测试结构:每个测试只包含一个逻辑断言。
- 测试结构:用 describe/it 组织测试套件。
- 测试结构:在合适场景使用 BDD 风格的 given-when-then。
- 测试结构:正确使用 setup 与 teardown(如 beforeEach/afterEach)。
- 测试隔离:保证测试可独立运行。
- 测试隔离:避免共享可变状态。
- 测试隔离:保证确定性,每次运行结果一致。
- 测试隔离:不依赖测试执行顺序,任意顺序都能通过。
- 测试隔离:测试结束后进行清理。
- 测试隔离:策略性使用 test doubles(桩、假对象、mock)。
- 断言:使用具体的断言而非宽泛断言。
- 断言:提供有帮助的失败信息。
- 断言:expected 值放在前面(如 `expect(actual).toBe(expected)`)。
- 断言:避免魔法数字,使用具名常量。
- 断言:为领域逻辑编写自定义 matcher。
- 测试数据:使用工厂函数生成测试数据。
- 测试数据:对复杂对象使用 Builder 模式。
- 测试数据:使用 faker 生成逼真的假数据。
- 测试数据:保持测试数据最小化。
- 测试数据:覆盖逼真的边界场景。
- 测试数据:管理好测试 fixtures。
- Mock:只在边界处 mock(如外部 API、数据库)。
- Mock:对重要的 mock 调用进行交互验证。
- Mock:不要过度 mock。
- Mock:使用 MSW 等工具让 mock 行为更逼真。
- 覆盖率:关注有意义的覆盖率,而非数字本身。
- 覆盖率:覆盖边界情况与边界值。
- 覆盖率:测试错误场景与不happy path。
- 覆盖率:不要以 100% 覆盖率为目标。
- 性能:保持单元测试快速(每个 <50ms)。
- 性能:并行运行测试。
- 性能:合理组织测试以加快反馈速度。
适用边界 · 注意事项
- 不要为了追求 100% 覆盖率而编写无意义的测试。
- 不要在非边界处过度 mock,导致测试与真实行为脱节。
- 不要编写依赖执行顺序或共享可变状态的测试。