platform-apex-test-run

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)。

769Star
281Fork
更新于 2026/7/24
SKILL.md
readonly只读
name
platform-apex-test-run
description

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 数据在每个测试方法中提交——重新查询;不要存储在静态变量中

输出格式

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

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

建议格式:

测试运行:<范围>
组织:<别名>
结果:<通过 / 部分通过 / 失败>
覆盖率:<百分比 / 关键类>
问题:<最高信号的失败>
下一步:<修复类、添加测试、重新运行范围或扩大回归>

跨技能集成

需求 委托给 原因
修复生产代码或编写测试类 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 低于标准;在依赖之前进行修订