Unit testing UnitTest WorkflowInstanceID异常

Unit testing UnitTest WorkflowInstanceID异常,unit-testing,workflow-foundation,accessor,instanceid,workflow-foundation-3,Unit Testing,Workflow Foundation,Accessor,Instanceid,Workflow Foundation 3,我正在对StateMachineWorkflow进行单元测试,我通过在测试项目中单击来创建我的测试方法,并进行Add-UnitTest。在项目窗口中,我选择要测试的工作流以及其中的所有方法 Visual Studio在我的测试项目中生成了一个测试引用文件夹,其中包含工作流的访问者。它还生成了测试所需的所有TestMethod()。所有测试方法都使用MyWorkflow\u访问器target=new MyWorkflow\u访问器()。当我需要调用函数时,我只需执行类似target.sendmai

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

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

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

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

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


另外,还有一些关于的信息。

您好,谢谢您的回答。我使用的是WF3.5。并与VisualStudio2010合作。迁移到WF4.0将很困难,因为我正在从事的项目非常先进。我试图利用单元测试生成的访问器,但到目前为止我没有运气,因为我可以访问de workflow中的函数,但是当我通过访问器调用它们时,WorkflowInstanceID之类的东西不起作用。对不起,我没有任何WF 3.5的经验。也许其他人可以提出解决方案。