2011-12-13 171 views
3

我正在寫一些代碼動態CRM 在線 2011年CRM在線2011集成測試在生產環境中運行

我想有一組集成測試中 CRM在線運行並能夠檢查:

  • 一些日誌輸出
  • 斷言失敗

的控制權在我的本地機器上運行。

現在,我在做:

var passes = new List<string>(); 
var fails = new List<Tuple<string,Exception>>(); 
foreach(Action<StringWriter> testAction in EnumTests()) 
{ 
    var log = stringWriter(); 
    try 
    { 
     testAction(log); 
     passes.Add(log.ToString()); 
    } 
    catch(Exception e) 
    { 
     fails.Add(log.ToString(),e); 
    } 
} 

throw new Exception("PASSES: " + string.Join("======", passes.ToArray()) 
    + "FAILS: " + string.Join("=======",fails.Select(f=>f.ToString()).ToArray()); 

我通過插件操作觸發此代碼連接到聯繫創建:

  1. 上傳插件
  2. 創建聯繫人
  3. 命中保存
  4. 下載例外數據文件

必須有更好的方法,但我根本無法在文檔或博客或論壇中找到任何引用)來通過測試觸發插件代碼(並獲取異常輸出)。

我希望能夠在插件中調用方法,然後將結果包括完整的堆棧跟蹤和日誌輸出返回到xUnit測試的上下文中。

這可能嗎?讓其他人做類似的事情嗎?當然,並不是所有的CRM 2011開發者都會陷入一個帶鼠標循環的whackamole?


NB我不喜歡在內部調試,理想情況下不希望將結果存儲到定製實體。我知道我可以屏幕抓取頁面,但我希望有一些方法可以完成相當於web服務的調用。或者說有人有一個很好的框架,可以完成所有工作(或者我可以調整)。

編輯:看起來我可能會結束,詢問是否有人反對CRM在線未來一些不錯的華廷代碼

+1

@Jon C感謝您的回覆 - 想知道是否有人在那裏。我很熟悉如何進行單元測試和/或模擬內容和/或內部調試,我不想暫停它。我看到codeplex的東西在串行化的PluginContexts上運輸。我不想要這些 - 我想a)在** CRM Online中觸發我的代碼**的運行,而不進行屏幕掃描b)將響應返回到客戶端機器上進行解釋。對不起,如果我不清楚我的約束。我真的很難相信沒有這樣的機制,但廣泛的搜索沒有任何結果。 –

+0

您是否希望每隔*次都返回異常數據*任何*用戶創建聯繫人,或僅在您正在測試時? –

+0

@彼得Majeed:只有當我駕駛它通過我的測試(我不希望人們交互或同時運行它注射結果到我的結果流 - 即,我真的想避免存儲在cusotm實體或在日誌)。 –

回答

2

我不知道我理解你希望實現的一切,但我打賭根據您的評論,您已經在codePlex上看過 CRM 2011 Plugin Testing Tools。由於項目描述和發佈說明都提到MS員工幫助開發該項目,您可以很快看到MS對您要求的支持有限。

正如Jon C所說,Josh Painter mentioned in an answer to another question有一個可以在客戶端機器上執行的內置插件調試器。

另外,Erik Pool posted on his blog爲您的插件手動實例化IPluginExecutionContext的一個很棒的入口。

希望這三種解決方案之一有效!

+1

+1謝謝彼得。那裏有好吃的東西 - 會看一看...看到了Erik Pool的一個 - 儘管它實現了很多,但它不會在服務器上運行我的代碼 - 即,我不知道我是否正在執行中等信任雖然 –

+0

@RubenBartelink - 我明白你的意思了。那麼我能想到的另一個辦法就是創建一個獨立於您的prod org的測試組織,您可以隨心所欲地執行任何操作,因爲任何部署到組織的AFAIK都會影響該組織中的所有用戶。 –

+0

是的,我實際上使用一個帳戶專門用於此目的(我的執行工作是支持將編寫真實插件的人的後端管道)。 [同系列的第一部分](http://erikpool.blogspot.com/2011/02/crm-2011-plug-in-tips-and-tricks-part-1.html)甚至展示瞭如何輕鬆更新一個程序集......(我最初的標題是接受問題,而不是集成測試,因爲它實際上是從我提供的圖層的角度接受的,而大多數插件開發人員會考慮接受使用提供真實UI的真實數據,即WatiN/Selenium) –

相關問題