首页 > 解决方案 > 确定要为 Salesforce Deploy 运行的最少测试

问题描述

我已经设置了一个 GitHub 操作,用于根据拉取请求验证代码更改。我正在使用 Salesforce CLI 来验证(在 PR 上)或部署(在main合并上)。

文档为我提供了几个选项来确定对此部署的测试。这些选项是NoTestRunRunSpecifiedTestsRunLocalTestsRunAllTestsInOrg。我目前RunLocalTests这样使用:

sfdx force:source:deploy -x output/package/package.xml --testlevel=RunLocalTests --checkonly

我们与一些大型组织合作,它们的完整测试需要很长时间才能完成。我只想RunSpecifiedTests进行验证,但不确定如何设置我的 GitHub 操作以动态了解要引入哪些测试。我在 CLI 文档中没有看到任何内容来确定这一点。

标签: salesforcegithub-actionssalesforce-cli

解决方案


确实没有办法以 100% 的可靠性做到这一点。Apex 代码的任何更改都有可能影响任何其他 Apex 代码。各种声明性元数据更改(包括验证规则、查找字段过滤器、流程和流、工作流规则和架构更改)可能会影响 Apex 代码的执行。

如果您想减少测试和部署运行时间,一些关键策略是:

  • 确保您的测试可以并行运行,这通常要快几个数量级。
  • 删除任何不能为您的应用程序提供有意义验证的测试。
  • 将您的应用程序模块化成包,这些包可以单独进行有意义的测试。然后,使用集成测试(无论是用 Apex 还是其他工具编写,例如 Robot Framework)来验证新包版本之间的交互。

只有最后一个才能让您真正有能力围绕特定代码行为建立边界并对其进行单独测试,尽管您仍然需要进行集成测试。

充其量,您可以建立某种在 Apex 类和相关测试类之间映射的命名约定,但根据上述观点,使用这种策略来限制测试运行非常有可能导致您错过错误(即,错误积极的)。


推荐阅读