UnitTest WorkflowInstanceID 异常

Posted

技术标签:

【中文标题】UnitTest WorkflowInstanceID 异常【英文标题】:UnitTest WorkflowInstanceID Exception 【发布时间】:2011-11-02 11:52:09 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

您好,感谢您的回答。我正在使用 WF 3.5。并使用 Visual Studio 2010。迁移到 WF 4.0 会很困难,因为我正在处理的项目非常先进。我试图利用单元测试生成的访问器,但到目前为止我没有运气,因为我可以访问工作流中的函数,但是当我通过访问器调用它们时,像 WorkflowInstanceID 这样的东西不起作用。 抱歉,我对 WF 3.5 没有任何经验。也许其他人可以提出解决方案。

以上是关于UnitTest WorkflowInstanceID 异常的主要内容,如果未能解决你的问题,请参考以下文章

unittest---unittest简单介绍

Python搭配unittest

python批量执行脚本,使用unittest.TestSuit(); unittest.TextTestRunner().run(); addTest();unittest.defaultTestL

细说unittest

python3.7导入unittest,默认执行不是unittest

unittest---unittest跳过用例