2011-04-19 19 views
1

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

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

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

+1

有它发生在你,这是他们的部署系统的设计?也许当单元测试失败,部署停止和失败,这是保护你不要部署包含错误的东西? – 2011-04-19 16:37:03

回答

2

不幸的是,没有对部署顶点代码进行部分测试,无论每次更改如何分钟或自包含触发完整的测试运行。这其中包括强制性代码度量(例如最小总代码覆盖率)

恕我直言,这证明是强化代码可靠性时的双面硬币。当我们开始使用apex时,我们所有的测试都非常全面地执行了对许多断言和检查的代码的实际测试。然后我们开始有非常长的部署时间,所以现在我们的测试服务于唯一的功能,满足最低的代码覆盖率,即使这种简化,部署任何东西也需要将近3分钟,而我们只使用20%的apex代码补贴。 IMHO2,Apex在编码平台方面执行这种测试的速度太慢。我甚至不能想象,如果我们达到50%的津贴,测试将运行多久,更不用说了。

2

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

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

1

如果我们使用Apache Ant的迁移工具,我们有部署 许多选项,如 deployCodeFailingTest这将跳过测试类 ,如果你想只运行特定的测试类 请使用:类似这样的东西在乌尔构建.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