AppExchange Packaging Requirements

DEX455 - Apex 开发流程详解

📄 第 56 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊一个在Salesforce开发中非常重要的概念,就是打包时的测试覆盖率要求。你看啊,如果你想把写好的Apex代码打包成一个托管包,然后发布到AppExchange上让别人安装使用,那就必须遵守一些质量门槛。这个门槛是什么呢?就是测试覆盖率。 简单来说,任何包含在你包里的Apex代码,包括你写的类和触发器,一定要有至少75%的累积测试覆盖率。注意这个“累积”的意思,是不管你有多少个类,全部加在一起算,而不是每个类单独都要达到75%。比如你有一个大类和几个小类,只要整体覆盖的行数比例超过75%就行了。但是,对于触发器,可不能说“我整体够了就不用测它”,文档特别强调:每个触发器也必须有一些测试覆盖,哪怕只覆盖一点点,也不能是零。 为什么要有这样的要求呢?因为你上传包到AppExchange的时候,Salesforce平台会自动运行你包里所有的测试方法,确保它们全都无错误地通过。这样做是为了保护下载你包的用户,保证你的代码质量是可靠的。如果测试通过不了,系统是不让你上传的。 好,这还没完。当有用户真正把这个包安装到他们自己的组织里时,系统还会再跑一次测试,但并不是跑全部测试哦。它会只运行那些你用 `@isTest(OnInstall=true)` 这个注解标记过的测试方法。也就是说,你可以在测试类里挑一些关键场景,打上这个标记,专门用来验证安装过程是否顺利。这样做的好处是既节省安装时间,又能抓住最核心的问题。那当然,要成功安装,这组被标记出来的测试子集,也必须全部通过才行。 我提一下,有些资料里可能会写错,把 `OnInstall` 写成了 `OnSure`,同学们要留意正确的注解是 ` @isTest(OnInstall=true) `。如果你想知道更详细的内容,可以去看官方发布的《第二代托管打包开发人员指南》,里面有更完整的说明。 所以总结一下,就是三件事:包代码整体覆盖率要到75%,触发器不能没有覆盖,安装时只跑你打标的关键测试且必须通过。记住这些,你打包发布的流程就会顺畅很多啦。 好,这节就讲到这里,我们下回见。

关键词

Apex Salesforce Developer Guide