Sharepoint 工作流系统中的单元/自动测试

Sharepoint 工作流系统中的单元/自动测试,sharepoint,unit-testing,k2,Sharepoint,Unit Testing,K2,您是否在像K2这样的复杂工作流系统上进行自动化测试 我们正在构建一个在Sharepoint 2007和K2之间进行广泛集成的系统。我甚至无法想象从何处开始自动化测试,因为工作流涉及多个用户与Sharepoint、K2工作流和自定义网页交互 有人在像K2这样的工作流服务器上进行过自动测试吗?这是否比它的价值更大?我在测试工作流繁重的基于MOSS的应用程序时遇到了类似的问题。我们案例中的工作流基于WWF 我的想法是模拟几乎所有您无法通过单元测试控制的内容—文档存储、身份验证、用户权限和操作,以及sh

您是否在像K2这样的复杂工作流系统上进行自动化测试

我们正在构建一个在Sharepoint 2007和K2之间进行广泛集成的系统。我甚至无法想象从何处开始自动化测试,因为工作流涉及多个用户与Sharepoint、K2工作流和自定义网页交互


有人在像K2这样的工作流服务器上进行过自动测试吗?这是否比它的价值更大?

我在测试工作流繁重的基于MOSS的应用程序时遇到了类似的问题。我们案例中的工作流基于WWF

我的想法是模拟几乎所有您无法通过单元测试控制的内容—文档存储、身份验证、用户权限和操作,以及sharepoint工作流中特定于sharepoint的部分(这些模拟应该经过彻底测试,以反映真实组件的行为)

您可以使用控制反转使代码选择在运行时使用哪个组件-real或mock

然后,您可以编写系统范围的测试来测试工作流行为—设置您自己的环境,检查工作流引擎的反应。这些测试太大,不能称之为单元测试,但它仍然是自动化测试


这种方法似乎适用于琐碎的情况,但我仍然需要证明它值得在现实世界的工作流中使用

我们今天刚刚编写了一个应用程序,它监视K2工作列表,从中提取某些任务,填写一些数据,并提交任务以供完成。这使我们能够执行自动化测试,找到回归,并在人们所需时间的一小部分内运行尽可能多的工作流路径。我可以想象,可以编写一个类似的程序来伪装成sharepoint


至于工作流项本身的单元测试,我们有一个引用自k2的dll,其中包含我们所有的行规则和处理逻辑。我们在k2工作流本身中没有任何代码,它都是从这些DLL引用的。这使我们能够轻松地在它们上编写单元测试,以测试所有单独的行规则。

。这是一个围绕运行时的简单包装器,它允许执行单个活动,简化参数传递,在工作流或活动完成之前阻止调用线程,并翻译/重试异常(如果有)。由于我的工作流仅通过自定义工作流服务发送或等待消息,因此我可以模拟该服务以期望工作流中的某些消息,并向其发布某些消息,在这里,我对我的工作流进行了真正的单元测试!技术的功劳归于Michael Kennedy。

如果您要进行单元测试,Isolator是目前唯一可以模拟SharePoint对象的工具


顺便说一句,我正在开发一个工作流模拟解决方案。

我已经使用K2ROM API对K2工作流进行了自动集成测试(如果您使用的是K2 blackpearl,可能是SourceCode.workflow.Client)

基本上,您可以在测试服务器上使用已知的对开本(我生成了一个GUID)启动一个进程,然后使用管理API将其删除。我编写了诸如AssertClientActivity之类的助手方法(基本上使用条件调用ProviderWorkItem)

使用IsSynchronous参数启动进程实例、WorklistItem.Finish等,以便在进程实例达到稳定状态之前不会返回相关方法调用

预计测试会很慢,偶尔会失败。这些不是单元测试

如果您想针对其他系统编写单元测试,可能需要包装K2API

请考虑查看和。您可能不需要K2