我们目前正在开发一个Salesforce.com自定义APEX项目,该项目涉及许多顶级类,触发器和Visualforce页面。我们还有许多来自AppExchange的应用程序,它们都是系统的一部分。
我们在测试环境中开发所有Apex类,Visualforce页面等,然后使用Eclipse IDE将其部署到实时环境中。会发生的是每次我们将更改部署到实时环境时,所有类的所有测试方法(包括来自AppExchange Apps的测试方法)似乎都在执行。因此,部署简单的更改最终可能需要几分钟时间。
在apex中是否有一种方法可以通过命名空间或类似的方式“打包”类,这样当我们尝试部署更改时,只会执行与该包相关的测试方法。如果存在这样的事情,我们的部署可以更快地发生。
答案 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)
我建议采用以下方法:
请参阅路径链接:https://trailhead.salesforce.com/users/strailhead/trailmixes/architect-dev-lifecycle-and-deployment