新闻活动
我们提供Salesforce CRM的信息,为您的大数据提供判断依据。
Salesforce提供了通过点击或代码开发解决方案的能力。提供了灵活的方式来实现需求,通常意味着相同的需求可以通过多种方式实现。
作为 Salesforce 管理员,您不太可能自己在 Apex 中开发任何基于代码的解决方案。但是,您所做的更改仍然可能会破坏其他人开发的 Apex 测试!在本文中,我们将探讨一些可能破坏现有 Apex 测试的方法。
什么是Apex测试?
Apex 测试类似于 Apex 代码的运行状况检查。它们旨在强制执行足够的代码覆盖率 (75%) 并确保代码正常运行。
Apex 测试是在某个时间点编写的,因此随着组织的发展,您的运行状况检查可能需要进行调整,以跟上最新的更改。如果 Apex 测试不再成功运行,这可能是由于多种原因造成的,包括缺少记录或权限更改。
打破Apex测试的10种方法:
Salesforce 管理员和开发人员知道,维护一个干净、实用和高效的 Salesforce 组织需要时刻保持警惕和仔细规划。
但是,即使是组织中最微小的更改也会产生连锁反应,尤其是在 Apex 测试方面。这份前十名列表突出了一些常见的场景(从引入验证规则到更改权限),这些场景可能会破坏 Apex 测试,并给您的团队带来麻烦。
1.验证规则
验证规则是一种点击而非代码的方式,用于确保数据在被系统接受之前是有效的。定义规则名称、条件、消息、描述、错误位置和标记活动,以构建只接受有效数据的逻辑。
假设您有一个 Apex 测试,试图插入一个名为“Test”的账户。如果您随后引入一个验证规则,拒绝任何名称为“Test”的账户,那么您的Apex 测试将在下次运行时失败。
2.重复规则
假设您在系统中引入了重复规则,以防止系统中堆积重复的联系人。
如果您随后运行尝试插入重复联系人的Apex测试,它将失败,然后会出现类似错误消息。DUPLICATES_DETECTED, Use one of these records?[]
对于营销部门来说,不再有重复的联系人可能是件好事,但这可能会带来重构任何不再有效的 Apex 测试的成本。
3.其他自动化(流程、顶点、审批流程等)
假设您引入了一个流,当您尝试创建没有商机联系人角色的决策者的业务机会时,该流程会显示一个自定义错误。这对数据完整性非常有用,但对于插入没有商机联系人角色的商机的Apex测试来说就不是那么好了。此Apex测试将失败,并显示FIELD_CUSTOM_VALIDATION_EXCEPTION。
请记住,Salesforce Flow 并不是您可以引入的唯一自动化类型,因此其他类型的自动化(例如Apex 类、审批流程)同样会打乱 Apex 测试。
4.必填字段
在 Salesforce 中创建字段时,您可以根据需要在字段级别、页面布局或 Lightning 记录页面(如果使用动态表单)上进行设置。
如果您有一个插入Case的历史Apex测试,并且您将业务单元作为必填字段(在字段级别)引入,而该字段没有在Apex测试中设置,那么测试将失败。在结果中,您将看到类似REQUIRED_FIELD_MISSING的内容来指示错误。
5. 唯一字段
有时您可能需要将字段标记为唯一。例如,每个账户必须具有唯一的客户编号。如果您插入一个客户编号为ABC123的账户,然后尝试插入另一个具有相同引用的账户,则会收到一条错误消息。
如果在 Apex 测试中发生这种情况,您也会遇到类似DUPLICATE_VALUE的错误。您可能需要进一步深入研究才能了解它来自哪个字段,因为标准错误不会告诉您这些信息(来自我自己的测试)。
6.受限选择列表
假设销售总监找到您,希望调整 Account Object 上的区域选择列表。您的组织已停止在 EMEA(欧洲、中东和非洲)进行交易,因此需要从这个恰好受到限制的选择列表中删除此选择列表值。
如果删除此值,并且 Apex 测试稍后尝试插入具有相同值的 Account,则此操作将被阻止,并显示类似INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST的错误消息。这通常会跟着无效值和字段API名称,以便于故障排除。
7.记录类型
作为 Salesforce 管理员,您可能希望将 Record Type (记录类型) 设置为非活动状态。例如,如果您停用了某个业务流程,并且不再需要相关的记录类型。一旦您在沙盒中将记录类型设置为非活动状态并将其部署到生产环境中,您可能会认为一切就绪。
但是,如果 Apex 类获取的记录类型在运行 Apex 测试时处于非活动状态,则会得到类似INVALID_CROSS_REFERENCE_KEY的错误消息。
8.查找过滤器
假设您有一个自定义对象。这已经存在了一段时间,但人们一直在关联无效账户。因此,您决定添加一个查找过滤器,只允许 Active = Yes 的 账户。
下次运行Apex测试时,如果测试试图使用未激活的帐户创建记录,则这些测试可能会失败。这将显示为FIELD_FILTER_VALIDAION_EXCEPTION。
确保错误消息清晰,以便更好地进行调试。
9. 权限变更
在 Apex 测试中,可以使用特定的权限集、权限集组和配置文件创建用户。如果您的 Apex 测试当前依赖于特定的设置,而您恰好更改了相同的设置,则这些测试可能会失败。
例如,如果您插入了一个具有操作权限集的用户,该用户不再可以编辑联系人,并且测试试图这样做,则可能会失败。根据Apex的编写方式,这些类型的错误可能以各种方式出现。
10. 已安装的软件包
AppExchange 是一个很棒的一站式商店,可以浏览应用程序,可以轻松安装以扩展Salesforce 功能。
其中一些包中包含 Apex 代码,用于执行复杂的逻辑或调用外部系统。您是否知道您的配置也可能导致这些 Apex 测试失败?
如果是这种情况,并且代码是托管的,那么您可能会在尝试解决问题时遇到困难。托管代码不可读,因此您无法更改逻辑使其有效。
如何主动避免破坏Apex测试?
作为一个“负责任的公民”,管理员可以确保他们所做的任何更改都不会影响其他地方的Apex测试。
这始于在开发生命周期中与开发人员的积极沟通,从需求收集、积压工作细化、实施到测试等。通过与了解可能受到影响的开发人员合作,可以及早发现潜在问题。
在每个冲刺结束时,运行 Apex 测试以确保事情没有受到更改的影响。如果您在开始时运行这些,则可以比较任何差异。通过在冲刺结束时发现问题,您将能够在下一个冲刺中快速修复或计划更复杂的修复。
如果您不定期运行 Apex 测试,您可能只有在需要调整现有代码时才会发现问题,而调整现有代码所花费的时间可能比预期的要长。
总结
作为管理员,让我们积极主动,尽早发现问题,这样将来就不必有人收拾我们的烂摊子了!当我们在开发新功能时更具前瞻性,这样它就不会干扰 Apex 测试。
- end -
关于翼攀
上海翼攀信息科技有限公司简称“翼攀”(slipstream),是一家基于Salesforce.com,为企业提供按需定制的CRM(客户关系管理)软件服务供应商,提供专业的Salesforce咨询、实施、培训、运维等服务。