mcpField
P
platform-apex-test-run

platform-apex-test-run

github.com/forcedotcom测试与质量1.1k7.0k 次安装1 天前更新
代码仓库

关于 platform-apex-test-run

用于运行 Apex 测试、分析失败并检查代码覆盖率的 Salesforce 技能。它指导开发者从小范围测试开始,逐步诊断问题并进行针对性修复。

主要功能

  1. 01运行指定范围的 Apex 测试
  2. 02分析失败与堆栈跟踪
  3. 03检查覆盖率缺口
  4. 04指导测试修复迭代
  5. 05建议测试场景覆盖

适用场景

  1. 01运行单个类或方法的测试
  2. 02调查失败的测试
  3. 03查找未覆盖的代码路径
  4. 04回归测试前提升覆盖率

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill platform-apex-test-run

安装后在 Claude Code 中输入/platform-apex-test-run确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
assets/
basic-test.cls
bulk-test.cls
dml-mock.cls
mock-callout-test.cls
stub-provider-example.cls
test-data-factory.cls
references/
cli-commands.md
mocking-patterns.md
performance-optimization.md
test-fix-loop.md
test-patterns.md
testing-best-practices.md
scripts/
parse-test-results.py

详细介绍

platform-apex-test-run:Salesforce 测试执行与覆盖率分析

当用户需要执行 Apex 测试并分析失败原因时使用此技能:运行测试、检查覆盖率、解读失败、提升覆盖率,以及为 Salesforce 代码管理规范的测试修复循环。

此技能适用的任务

当工作涉及以下内容时,使用 platform-apex-test-run:

  • sf apex run test 工作流
  • Apex 单元测试失败
  • 代码覆盖率分析
  • 找出未覆盖的代码行和缺失的测试场景
  • 为 Apex 代码执行结构化的测试修复循环

以下情况应委派给其他技能:

  • 编写或重构生产环境 Apex → platform-apex-generate 技能
  • 测试 Agentforce Agent → agentforce-test 技能
  • 使用 Jest 测试 LWC → experience-lwc-generate

首先收集必要的上下文

询问或推断:

  • 目标 org 别名
  • 预期测试范围:单个类、指定方法、测试套件或本地测试
  • 覆盖率阈值要求
  • 用户只需要诊断,还是需要执行测试修复循环
  • 是否已有相关的测试数据工厂

推荐工作流

1. 确定测试范围

找出:

  • 现有的测试类
  • 目标生产类
  • 测试数据工厂/设置辅助工具
2. 先运行最小的有效测试集

调试失败时从小范围开始;只有在修复稳定后才扩大范围。

3. 分析结果

重点关注:

  • 失败的方法
  • 异常类型和堆栈跟踪
  • 未覆盖的代码行/覆盖不足的区域
  • 失败是否源于测试数据错误、断言脆弱或生产逻辑故障
4. 执行规范的修复循环

当问题与代码或测试质量有关时:

  • 必要时将代码修复委派给 platform-apex-generate 技能
  • 添加或改进测试
  • 在更广泛的回归测试之前,重新运行针对性测试
5. 有针对性地提升覆盖率

覆盖:

  • 正向路径
  • 负向/异常路径
  • 批量处理路径(适用时,使用 251 条以上记录)
  • 相关时的 callout 或异步路径

重要规则

规则原因
默认使用 SeeAllData=false确保测试隔离;避免依赖 org 特有数据
每项测试都必须断言有意义的结果没有断言的测试无法证明任何内容,只会带来虚假的信心
使用 251 条以上记录测试批量行为触发每批 200 条记录的处理;251 条记录会跨越此边界
使用工厂/@TestSetup 来提升清晰度在同一处一致地创建数据;每个测试方法之间会回滚数据
异步操作使用 Test.startTest() 和 Test.stopTest()确保异步操作(queueable、future)在断言前完成
不要在测试中隐藏不稳定的 org 依赖避免因 org 状态导致间歇性失败

常见问题

问题解决方法
测试在本地通过,但在 CI org 中失败检查是否使用了 SeeAllData=true,或是否隐式依赖 org 特有记录
重构后覆盖率意外下降先运行针对类的测试,再扩大到 RunLocalTests 进行确认
callout 测试中出现 "Uncommitted work pending" 错误在同一个测试上下文中,DML 和 HTTP callout 不能混用,除非用 Test.startTest() 包裹
Mock 在测试中未生效确保在发出 callout 的代码运行前调用 Test.setMock()
测试方法中缺少 @TestSetup 数据@TestSetup 数据会按测试方法提交;请重新查询,不要存储在静态变量中
API 版本 67.0 及更高版本未执行必要的访问级别检查检查失败的 SOQL/DML 堆栈跟踪,确认是否存在 CRUD/FLS 访问错误;若预期采用用户模式行为,使用分配了权限集的 System.runAs;若需要系统访问,则记录合理的 SYSTEM_MODE 路径

输出格式

完成后,按以下顺序报告:

  1. 运行了哪些测试
  2. 通过/失败摘要
  3. 覆盖率结果
  4. 根本原因调查结果
  5. 修复或下一轮运行建议

建议格式:

Test run: <scope>
Org: <alias>
Result: <passed / partial / failed>
Coverage: <percent / key classes>
Issues: <highest-signal failures>
Next step: <fix class, add test, rerun scope, or widen regression>

跨技能集成

需求委派给原因
修复生产代码或编写测试类platform-apex-generate skill代码生成与修复
创建批量/边缘情况测试数据platform-data-manage逼真的测试数据集
将更新后的测试部署到 orgplatform-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.mdAgent 式测试修复循环实现和故障分析决策树
references/mocking-patterns.mdHttpCalloutMock、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低于标准;依赖前应进行修订

评论

支持 Markdown