2011-04-19 45 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