salesforce - 确定要为 Salesforce Deploy 运行的最少测试
问题描述
我已经设置了一个 GitHub 操作,用于根据拉取请求验证代码更改。我正在使用 Salesforce CLI 来验证(在 PR 上)或部署(在main
合并上)。
文档为我提供了几个选项来确定对此部署的测试。这些选项是NoTestRun
、RunSpecifiedTests
、RunLocalTests
、RunAllTestsInOrg
。我目前RunLocalTests
这样使用:
sfdx force:source:deploy -x output/package/package.xml --testlevel=RunLocalTests --checkonly
我们与一些大型组织合作,它们的完整测试需要很长时间才能完成。我只想RunSpecifiedTests
进行验证,但不确定如何设置我的 GitHub 操作以动态了解要引入哪些测试。我在 CLI 文档中没有看到任何内容来确定这一点。
解决方案
确实没有办法以 100% 的可靠性做到这一点。Apex 代码的任何更改都有可能影响任何其他 Apex 代码。各种声明性元数据更改(包括验证规则、查找字段过滤器、流程和流、工作流规则和架构更改)可能会影响 Apex 代码的执行。
如果您想减少测试和部署运行时间,一些关键策略是:
- 确保您的测试可以并行运行,这通常要快几个数量级。
- 删除任何不能为您的应用程序提供有意义验证的测试。
- 将您的应用程序模块化成包,这些包可以单独进行有意义的测试。然后,使用集成测试(无论是用 Apex 还是其他工具编写,例如 Robot Framework)来验证新包版本之间的交互。
只有最后一个才能让您真正有能力围绕特定代码行为建立边界并对其进行单独测试,尽管您仍然需要进行集成测试。
充其量,您可以建立某种在 Apex 类和相关测试类之间映射的命名约定,但根据上述观点,使用这种策略来限制测试运行非常有可能导致您错过错误(即,错误积极的)。
推荐阅读
- javascript - 以编程方式在 Angular 上的 Leaflet 中的层之间切换
- vba - 使用 Form_BeforeUpdate(取消为整数)访问 DB VBA“无当前记录错误”
- django - 如何在 Django 测试期间运行 Lighthouse CLI?
- android - 在 Android 中使用 razor pay 支付网关测试模式时 order_id 字段应该是什么
- .net-core - 是否可以调用 func 事件?
- java - 即使我的代码适用于样本,但在测试集 1 中得到错误答案(Google Kickstart 2020 Round A)
- reactjs - React JS vs VUE for ERP 使用 Larvel 和 SSR
- java - 如何使用 JGit 库获取 git repo 文件夹中所有文件的 SHA 值列表
- javascript - 更新输入文本字段以依次更新 Primefaces 编辑器上的文本
- excel - VBA Excel选择字符出现后的内容