Salesforce.com部署

时间:2011-04-19 16:24:25

标签: deployment salesforce apex-code

我们目前正在开发一个Salesforce.com自定义APEX项目,该项目涉及许多顶级类,触发器和Visualforce页面。我们还有许多来自AppExchange的应用程序,它们都是系统的一部分。

我们在测试环境中开发所有Apex类,Visualforce页面等,然后使用Eclipse IDE将其部署到实时环境中。会发生的是每次我们将更改部署到实时环境时,所有类的所有测试方法(包括来自AppExchange Apps的测试方法)似乎都在执行。因此,部署简单的更改最终可能需要几分钟时间。

在apex中是否有一种方法可以通过命名空间或类似的方式“打包”类,这样当我们尝试部署更改时,只会执行与该包相关的测试方法。如果存在这样的事情,我们的部署可以更快地发生。

4 个答案:

答案 0 :(得分:2)

不幸的是,没有,部署顶点代码的部分测试,每次更改,无论多么微小或自包含都会触发完整的测试运行。除此之外,还强制执行代码度量标准(例如,最小总代码覆盖率)

恕我直言,在强制执行代码可靠性方面,这被证明是一个双面的硬币。当我们开始使用apex时,我们所有的测试都非常全面,通过大量的断言和检查来执行代码的实际测试。然后我们开始有非常长的部署时间,所以现在我们的测试服务于唯一的功能,满足最小的代码覆盖率,即使这样简化,部署任何东西花费将近3分钟,我们只使用20%的顶级代码容量。 IMHO2,Apex在编码平台上的速度太慢,无法执行此类测试。我甚至无法想象,如果我们达到50%的补贴,那么测试会持续多长时间,更不用说了。

答案 1 :(得分:2)

这是可能的,但您需要了解Apache Ant并查看Force.com Migration Toolkit。然后,您可以使用构建文件来确定部署哪些文件以及运行哪些测试。

我正忙着写一篇白皮书,这篇白皮书将涉及这个和其他相关的开发策略......我会在完成后发布到我的博客。

答案 2 :(得分:1)

如果我们使用apache ant迁移工具,我们有很多部署选项 喜欢 deployCodeFailingTest将跳过测试类 如果您只想运行特定的测试类 请使用:ur build.xml中与此类似的东西

<target name="deployCode">
`<sf:deploy`
username="${sf.username}"
password="${sf.password}"
serverurl="${sf.serverurl}"
deployroot="codepkg">
<runTest>SampleDeployClass</runTest>
</sf:deploy>
</target>

详细参考请使用此链接 http://www.salesforce.com/us/developer/docs/daas/salesforce_migration_guide.pdf

答案 3 :(得分:0)

我建议采用以下方法:

  1. 将Git用作所有sf代码的存储库
  2. jenkins将您的代码部署为CI / CD
  3. PMD作为静态代码分析器
  4. sfdx作为jenkins中用于部署的部署方法。

请参阅路径链接:https://trailhead.salesforce.com/users/strailhead/trailmixes/architect-dev-lifecycle-and-deployment