1

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

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

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

4

1 回答 1

0

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

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

否则,在 MSDN 上有一些关于使用 WF 3.5 进行测试的信息。

于 2011-11-02T12:48:29.177 回答