UnitTest WorkflowInstanceID异常

时间:2011-11-02 11:52:09

标签: unit-testing workflow-foundation accessor instanceid workflow-foundation-3

我正在对StateMachineWorkflow进行单元测试,我通过单击我的测试项目创建我的测试方法,然后创建Add - UnitTest。在项目窗口中,我选择要测试的工作流程及其中的所有方法。

Visual Studio在我的测试项目中生成了一个测试参考文件夹,其中包含工作流的访问者。它还生成了测试所需的所有TestMethod()。所有测试方法都使用MyWorkflow_Accessor target = new MyWorkflow_Accessor()。当我需要调用一个函数时,我只需执行类似target.SendEmail()。

的操作

一切正常,除了一件事:我不能使用工作流的WorkflowInstanceId ,当代码到达使用它的行时,它会在工作流中引发异常,“这是一个无效的设计时操作。您只能在运行时执行操作。“ 是否可以通过代码注入WorkflowID?这种情况有没有解决办法?我在许多函数中使用WorkflowInstanceId并更改工作流代码以匹配我的测试似乎不是一个好主意,因为我认为问题是在测试中而不是在工作流中。

1 个答案:

答案 0 :(得分:0)

从您的问题中不清楚您是否在状态机更新时使用WF 3.5或WF4。对于后者,您可以使用Microsoft.Activities.UnitTesting来测试工作流程。

听起来你正在使用WF 3.5。如果这是新的发展,我会认真考虑转向WF4。微软基本上重写了WF,越早切换,你的迁移路径就越容易。

否则,testing with WF 3.5 on MSDN上有一些信息。