generating-apex-test

generating-apex-test

热门

使用 TestDataFactory 模式、批量测试(251+ 条记录)、模拟策略、断言最佳实践以及严格的测试-修复循环,生成并验证 Apex 测试类。在创建新的 Apex 测试类、提高测试覆盖率、调试和修复失败的 Apex 测试、执行测试运行和覆盖率分析,或为触发器、服务、控制器、批处理作业、可排队作业和集成实现测试模式时使用此技能。触发条件:*Test.cls、*_Test.cls 文件、sf apex run test 工作流、覆盖率报告、测试-修复循环。不要为生产 Apex 代码(使用 generating-apex)或 Jest/LWC 测试触发。

766Star
280Fork
更新于 2026/7/24
SKILL.md
readonly只读
name
generating-apex-test
description

使用 TestDataFactory 模式、批量测试(251+ 条记录)、模拟策略、断言最佳实践以及严格的测试-修复循环,生成并验证 Apex 测试类。在创建新的 Apex 测试类、提高测试覆盖率、调试和修复失败的 Apex 测试、执行测试运行和覆盖率分析,或为触发器、服务、控制器、批处理作业、可排队作业和集成实现测试模式时使用此技能。触发条件:*Test.cls、*_Test.cls 文件、sf apex run test 工作流、覆盖率报告、测试-修复循环。不要为生产 Apex 代码(使用 generating-apex)或 Jest/LWC 测试触发。

生成 Apex 测试

生成可用于生产的 Apex 测试类,并通过覆盖率分析运行严格的测试-修复循环。

核心原则

  • 每个方法一个行为 — 每个测试方法验证一个单一场景。将正向、负向和批量测试分开。绝不要在一个方法中组合相关但不同的输入(例如 null 和空值)——应创建 _NullInput__EmptyInput_ 作为单独的测试方法

  • 批量测试 — 使用 251+ 条记录进行测试,以跨越 200 条记录的触发器批处理边界。批处理 Apex 例外: 在测试上下文中,只有一个 execute() 调用运行,因此设置 batchSize >= testRecordCount。请参阅 references/async-testing.md

  • 隔离测试数据 — 每个 @TestSetup 必须将记录创建委托给 TestDataFactory 类。如果不存在,请先创建一个。绝不要在 @TestSetup 中内联构建记录列表。绝不要依赖组织数据(SeeAllData=false)或硬编码的 ID。有关重复规则处理,请参阅 references/test-data-factory.md

  • 有意义的断言 — 使用从测试数据设置中计算出的精确预期值。当值确定时,绝不要使用范围断言或近似计数。始终包含失败消息。请参阅 references/assertion-patterns.md

  • 仅使用 Assert — 使用 Assert.areEqualAssert.isTrueAssert.fail 等。绝不要使用旧的 System.assertSystem.assertEqualsSystem.assertNotEquals

  • 模拟外部边界 — 对出站调用使用 HttpCalloutMock,对 SOSL 使用 Test.setFixedSearchResults,对数据库隔离使用 DML 模拟类。通过构造函数注入设计可测试性。请参阅 references/mocking-patterns.md

  • 测试负向路径 — 验证错误处理和异常场景,而不仅仅是正向路径

  • 使用 start/stop 包裹 — 将 Test.startTest()Test.stopTest() 配对,以重置调控器限制并强制异步执行

Test.startTest() / Test.stopTest()

始终将待测试代码包裹在 Test.startTest() / Test.stopTest() 中: