
generating-apex-test
热门使用 TestDataFactory 模式、批量测试(251+ 条记录)、模拟策略、断言最佳实践以及严格的测试-修复循环,生成并验证 Apex 测试类。在创建新的 Apex 测试类、提高测试覆盖率、调试和修复失败的 Apex 测试、执行测试运行和覆盖率分析,或为触发器、服务、控制器、批处理作业、可排队作业和集成实现测试模式时使用此技能。触发条件:*Test.cls、*_Test.cls 文件、sf apex run test 工作流、覆盖率报告、测试-修复循环。不要为生产 Apex 代码(使用 generating-apex)或 Jest/LWC 测试触发。
使用 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.areEqual、Assert.isTrue、Assert.fail等。绝不要使用旧的System.assert、System.assertEquals或System.assertNotEquals -
模拟外部边界 — 对出站调用使用
HttpCalloutMock,对 SOSL 使用Test.setFixedSearchResults,对数据库隔离使用 DML 模拟类。通过构造函数注入设计可测试性。请参阅 references/mocking-patterns.md -
测试负向路径 — 验证错误处理和异常场景,而不仅仅是正向路径
-
使用 start/stop 包裹 — 将
Test.startTest()与Test.stopTest()配对,以重置调控器限制并强制异步执行
Test.startTest() / Test.stopTest()
始终将待测试代码包裹在 Test.startTest() / Test.stopTest() 中:





