1

我正在測試一個StateMachineWorkflow的單元,並且通過單擊我的測試項目創建我的測試方法,然後使用Add-UnitTest。在項目窗口中,我選擇要測試的工作流程及其中的所有方法。UnitTest WorkflowInstanceID異常

Visual Studio使用工作流的訪問器在我的測試項目中生成了一個測試參考文件夾。它還生成了測試所需的所有TestMethod()。所有測試方法都使用MyWorkflow_Accessor target = new MyWorkflow_Accessor()。當我需要調用一個函數時,我只需要執行一些類似於target.SendEmail()的操作。

一切工作正常,除了一兩件事:我無法使用工作流,當代碼達到使用這個它拋出的工作流異常的線,「這是一個無效的設計時間WorkflowInstanceId只能在運行時執行操作「 是否可以通過代碼注入WorkflowID?有這種情況的解決方法嗎?我在很多函數中使用WorkflowInstanceId,並且更改Workflow代碼以匹配我的測試似乎不是一個好主意,因爲我認爲問題出現在測試中,而不是工作流中。

回答

0

從您的問題中可以看出,如果您在狀態機更新中使用WF 3.5或WF 4,則不清楚。對於後者,您可以使用Microsoft.Activities.UnitTesting來測試工作流程。

雖然這聽起來像你使用WF 3.5。如果這是新的發展,我會認真考慮轉向WF4。微軟基本上重寫了WF,而且切換越快,遷移路徑就越簡單。

否則,有關於testing with WF 3.5 on MSDN的一些信息。

+0

你好,謝謝你的回答。我正在使用WF 3.5。並使用Visual Studio 2010.移動到WF 4.0將會很困難,因爲我正在開發的項目非常先進。我試圖利用單元測試生成的訪問器,但到目前爲止,我沒有運氣,因爲我可以訪問de工作流中的函數,但WorkflowInstanceID這樣的東西在我由訪問者調用它們時不起作用。 – Brazeta

+0

對不起,我對WF 3.5沒有任何經驗。也許別人可以提出解決方案。 – TrueWill

+0

無論如何,謝謝你的幫助:) – Brazeta