1

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

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

有没有办法在 apex 中通过命名空间或类似的方式“打包”类,以便当我们尝试部署更改时,只执行与该包相关的测试方法。如果存在类似的情况,我们的部署可以更快地进行。

4

4 回答 4

2

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

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

于 2011-04-25T14:37:19.207 回答
2

不幸的是,没有对顶点代码的部署进行部分测试,每次更改,无论多分钟或独立触发完整的测试运行。除其他外,这会强制执行代码度量(例如,最小总代码覆盖率)

恕我直言,在执行代码可靠性方面,这被证明是一个双面硬币。当我们开始使用 apex 时,我们所有的测试都非常全面地执行了包含大量断言和检查的代码的实际测试。然后我们开始有非常长的部署时间,所以现在我们的测试只提供一个功能,满足最小的代码覆盖率,即使有了这种简化,部署任何东西也需要近 3 分钟,我们只使用了 20% 的顶点代码余量。恕我直言,Apex 的编码平台太慢了,无法执行这种测试。我什至无法想象如果我们达到 50% 的容限,测试会运行多长时间,更不用说。

于 2011-04-19T19:51:30.173 回答
1

如果我们使用 apache ant 迁移工具,我们有很多部署选项,例如 deployCodeFailingTest,它会跳过测试类,如果你只想运行特定的测试类,请使用:在你的 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

于 2011-10-28T05:02:34.857 回答
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

于 2019-12-12T11:37:14.510 回答