
platform-apex-test-run
热门Apex 测试执行、覆盖率分析和测试修复循环,采用 120 分评分制。当用户需要运行 Apex 测试、检查代码覆盖率、修复失败的测试或处理 *Test.cls / *_Test.cls 文件时使用。触发条件:用户运行 Apex 测试、检查代码覆盖率、修复失败的测试或接触 *Test.cls / *_Test.cls 文件。不触发条件:编写 Apex 生产代码(使用 platform-apex-generate)、Agentforce 代理测试(使用 agentforce-test)或 Jest/LWC 测试(使用 experience-lwc-generate)。
Apex 测试执行、覆盖率分析和测试修复循环,采用 120 分评分制。当用户需要运行 Apex 测试、检查代码覆盖率、修复失败的测试或处理 *Test.cls / *_Test.cls 文件时使用。触发条件:用户运行 Apex 测试、检查代码覆盖率、修复失败的测试或接触 *Test.cls / *_Test.cls 文件。不触发条件:编写 Apex 生产代码(使用 platform-apex-generate)、Agentforce 代理测试(使用 agentforce-test)或 Jest/LWC 测试(使用 experience-lwc-generate)。
platform-apex-test-run: Salesforce 测试执行与覆盖率分析
当用户需要 Apex 测试执行和失败分析时使用此技能:运行测试、检查覆盖率、解释失败原因、提高覆盖率以及管理 Salesforce 代码的规范化测试修复循环。
此技能负责的任务
当工作涉及以下内容时,使用 platform-apex-test-run:
sf apex run test工作流- Apex 单元测试失败
- 代码覆盖率分析
- 识别未覆盖的代码行和缺失的测试场景
- Apex 代码的结构化测试修复循环
当用户处于以下情况时,请委托给其他技能:
- 编写或重构生产 Apex →
platform-apex-generate技能 - 测试 Agentforce 代理 →
agentforce-test技能 - 使用 Jest 测试 LWC → experience-lwc-generate
首先需要收集的上下文
询问或推断:
- 目标组织别名
- 期望的测试范围:单个类、特定方法、测试套件或本地测试
- 覆盖率阈值预期
- 用户只需要诊断还是需要测试修复循环
- 是否已存在相关的测试数据工厂
推荐工作流
1. 发现测试范围
识别:
- 现有的测试类
- 目标生产类
- 测试数据工厂/设置辅助类
2. 首先运行最小的有用测试集
调试失败时从窄范围开始;仅在修复稳定后扩大范围。
3. 分析结果
重点关注:
- 失败的方法
- 异常类型和堆栈跟踪
- 未覆盖的代码行/覆盖率薄弱区域
- 失败是否表明测试数据错误、脆弱的断言或生产逻辑损坏
4. 运行规范的修复循环
当问题出在代码或测试质量时:
- 必要时将代码修复委托给
platform-apex-generate技能 - 添加或改进测试
- 在进行更广泛的回归测试之前,先重新运行有针对性的测试
5. 有目的地提高覆盖率
覆盖:
- 正向路径
- 负向/异常路径
- 批量路径(适当时 251+ 条记录)
- 相关时的调用或异步路径
高信号规则
| 规则 | 理由 |
|---|---|
默认使用 SeeAllData=false |
确保测试隔离;防止依赖组织特定数据 |
| 每个测试必须断言有意义的结果 | 没有断言的测试无法证明任何东西,并带来虚假的信心 |
| 使用 251+ 条记录测试批量行为 | 触发器以 200 条记录为一批处理;251 条记录跨越边界 |
在能提高清晰度时使用工厂/@TestSetup |
在一个地方创建一致的数据;在测试方法之间回滚 |
将 Test.startTest() 与 Test.stopTest() 配对用于异步 |
确保异步操作(queueable、future)在断言前完成 |
| 不要在测试中隐藏不稳定的组织依赖 | 防止与组织状态相关的间歇性失败 |
注意事项
| 问题 | 解决方案 |
|---|---|
| 测试在本地通过但在 CI 组织中失败 | 检查 SeeAllData=true 或未声明的组织特定记录依赖 |
| 重构后覆盖率意外下降 | 先运行有针对性的类级测试,然后扩大到 RunLocalTests 以确认 |
| 调用测试中出现“未提交的工作待处理”错误 | DML 和 HTTP 调用不能在同一个测试上下文中混合使用,除非用 Test.startTest() 包装 |
| 模拟在测试中未生效 | 确保在发起调用的代码之前调用 Test.setMock() |
测试方法中缺少 @TestSetup 数据 |
@TestSetup 数据在每个测试方法中提交——重新查询;不要存储在静态变量中 |
输出格式
完成时,按以下顺序报告:
- 运行了哪些测试
- 通过/失败摘要
- 覆盖率结果
- 根本原因发现
- 修复或下次运行建议
建议格式:
测试运行:<范围>
组织:<别名>
结果:<通过 / 部分通过 / 失败>
覆盖率:<百分比 / 关键类>
问题:<最高信号的失败>
下一步:<修复类、添加测试、重新运行范围或扩大回归>
跨技能集成
| 需求 | 委托给 | 原因 |
|---|---|---|
| 修复生产代码或编写测试类 | platform-apex-generate 技能 |
代码生成和修复 |
| 创建批量/边缘情况测试数据 | platform-data-manage | 真实的测试数据集 |
| 将更新的测试部署到组织 | platform-metadata-deploy | 部署工作流 |
| 检查详细的运行时日志 | platform-apex-logs-debug | 更深入的失败分析 |
参考文件索引
| 文件 | 何时阅读 |
|---|---|
references/cli-commands.md |
所有 sf apex run test 命令标志、输出格式、异步执行和覆盖率命令 |
references/test-patterns.md |
测试类模板——基本、批量(251+)、模拟调用和数据工厂模式 |
references/testing-best-practices.md |
核心测试原则——AAA 模式、命名约定、批量、负向和模拟策略 |
references/test-fix-loop.md |
代理测试修复循环实现和失败分析决策树 |
references/mocking-patterns.md |
HttpCalloutMock、DML 模拟、StubProvider 和选择器模拟模式 |
references/performance-optimization.md |
减少测试执行时间的技术——DML 模拟、SOQL 模拟、循环优化 |
assets/basic-test.cls |
模板:带有 @TestSetup、正向/负向/批量/边缘情况方法的标准测试类 |
assets/bulk-test.cls |
模板:包含 251+ 条记录、跨越 200 条记录触发器批处理边界的批量测试 |
assets/mock-callout-test.cls |
模板:使用 HttpCalloutMock 的 HTTP 调用模拟 |
assets/test-data-factory.cls |
模板:可重用的 TestDataFactory,包含创建和插入辅助方法 |
assets/dml-mock.cls |
模板:用于无数据库单元测试的 IDML 接口 + DMLMock 实现 |
assets/stub-provider-example.cls |
模板:基于 StubProvider 的依赖注入桩 |
scripts/parse-test-results.py |
后工具钩子——解析 sf apex run test JSON 输出并格式化失败信息用于自动修复循环 |
评分指南
| 分数 | 含义 |
|---|---|
| 108+ | 强大的生产级测试信心 |
| 96–107 | 良好的测试套件,存在小差距 |
| 84–95 | 可接受,但需加强覆盖率/断言 |
| < 84 | 低于标准;在依赖之前进行修订 |





