WF单元测试系列4:测试Workflow
2010-10-01 08:19:36 来源:WEB开发网简单解释一下代码:
_createAcmeEmployee对象负责获取工作流的返回值,用来验证测试结果。
_manualScheduler和_runtime负责工作流的运行。
TestInitializer()方法负责初始化测试环境,实际上就是运行工作流,并在工作流结束之后获取输出参数给_createAcmeEmployee对象。
RunTheWorkflow()方法传递FirstName和LastName两个参数给被运行的ProvisionNewEmployee工作流。
CreateAValidAcmeEmployee()方法用指定的参数运行工作流,然后验证工作流生成的AcmeEmployee对象的FirstName和LastName是否和传入的参数一致。
运行测试,失败!因为我们还没有为工作流添加逻辑呢。
这时我们之前创建的两个Activity派上用场了。编译工程,然后从Toolbar中依次把GetEmailAddress和StoreNewAcmeEmoloyee拖到工作流当中。设置他们的属性:
1.把GetEmailAddress的FirstName,LastName分别绑定到工作流的对应属性上,从而获得传入的参数值。GetEmailAddress负责根据这两个参数生成一个Email,保存到它的Email属性上。
2.把StoreNewAcmeEmoloyee的Email属性绑定到GetEmailAddress的Email上,用来获得它生成的Email。
3.绑定StoreNewAcmeEmoloyee的FirstName,LastName到工作流的对应属性上,同样用来获得参数值。
4.绑定StoreNewAcmeEmoloyee的NewEmployee属性到工作流的对应属性上,用来输出它生成的对象。
看到这里大家应该明白了,我的工作流根据传入的两个参数生成Email,再根据这三个参数生成一个AcmeEmployee对象,然后输出给宿主。
最后还有一个细节,大家还记得吧,StoreNewAcmeEmployee把生成的AcmeEmployee对象添加到一个IEmployeeRepository中保存(调用它的Add方法)。所以在工作流中添加如下代码:
ProvisionNewEmployeeWF_Initialized
private void ProvisionNewEmployeeWF_Initialized(object sender, EventArgs e)
{
_storeNewAcmeEmployeeActivity.EmployeeDataStore =
AcmeEmployeeRepository.GetInstance();
}
用来在工作流初始化时实例化此接口。
OK!我们的逻辑添加完毕!运行测试,通过!
至于另外两个测试方法,则是测试错误路径的,前面讲过,不再赘述。
我们的WF测试系列就此结束了。当然关于此的话题不会就此终结,大家有什么关于WF测试的心得,体会,问题,欢迎一起讨论!
注:以上示例来自WF3.5 Hands On Lab,英文好的朋友可以去这里看:https://www.microsoft.com/resources/virtuallabs/step3-msdn.aspx?LabId=c4a993a5-d498-4d5c-9f98-476c1f496d15&BToken=reg
系列文章:
WF单元测试系列1:测试基本的Activity
WF单元测试系列2:简单测试Activity的行为
WF单元测试系列3:测试Activity的行为
- ››单元格被选中就触发宏的运行的实现方法
- ››WF 4.0 beta1中的跟踪机制
- ››WF 4.0的建模风格:顺序和Flowchart
- ››WF4.0 Beta1之旅(5):规则引擎的变化
- ››WF 4.0 beta1活动概览(1):Procedural
- ››WF4.0 Beta1之旅(4):Bookmark的使用
- ››WF4.0 Beta1之旅:基本介绍
- ››WF4.0 Beta1之旅(2):异常处理
- ››WF4.0 Beta1之旅(3):全新的FlowChart
- ››WF 应用场景指南: SharePoint 与工作流(上)
- ››WF 应用场景指南: 展现流(Presentation Flow)
- ››WF单元测试系列1:测试基本的Activity
更多精彩
赞助商链接