技术开发 频道

详解如何在WPF中创建测试工作流

  3.创建测试用例

  在这个任务中,你再将在真正实现活动之前建立测试用例。

  (1)添加下列命名空间到SayHelloTests.cs (C#) 文件或SayHelloTests.vb (Visual Basic):

  using System.Activities;
  
using HelloWorkflow;
  Imports System.Activities

  (2)建立一个测试用例用于验证工作流执行正确。请打开SayHelloTests.cs (C#)或SayHelloTests.vb (Visual Basic),将TestMethod1方法重命名为ShouldReturnGreetingWithName。

  虽然目前SayHello活动并不接受任何参数,但是我们将会使用代码调用它,就像它能接受参数一样 。这将会让我们思考如何设计活动的接口并使用它。如果Visual Studio提示UserName属性没有被定义,请不要担心。替换ShouldReturnGreetingWithName 中的代码如下C#

  [TestMethod]

  
public void ShouldReturnGreetingWithName()

  {

  IDictionary output;

  output
= WorkflowInvoker.Invoke(

  
new SayHello()

  {

  UserName
= "Test"

  });

  Assert.AreEqual(
"Hello Test from Workflow 4", output["Greeting"]);

  }

  Visual Basic

   Public Sub ShouldReturnGreetingWithName()

  Dim output
= WorkflowInvoker.Invoke(

  New SayHello() With {.UserName
= "Test"})

  Assert.AreEqual(
"Hello Test from Workflow 4", output("Greeting"))

  End Sub

  如果向活动传入参数?

  你可以建立一个活动并使用对象初始化的方法初始化参数(它是一个public的属性),或者你可以使用Invoke函数的Dictionary (C#)或Dictionary(Of String, Object) (Visual Basic)参数,通过名称将数据映射到活动的参数上。

  如何取得工作流的输出数据?

  output变量是IDictionary (C#)或IDictionary(Of String, Object) (Visual Basic),它包含一组使用变量名作为关键字的数据映射。

  4.编译程序

  活动的输入输出接口看上去不错,但是程序还没有被编译过。我们第一个目标是使程序能编译成功。

  (1)按CTRL+SHIFT+B以编译程序,你将会看到编译失败


UserName没有定义(C#)


UserName没有定义(VB)

  (2)在设计器中打开SayHello.xaml

  (3)单击Arguments按钮打开参数编辑窗口


单击Argument按钮打开参数编辑窗口

  (4)添加UserName和Greeting 参数,如下图所示


定义活动的参数

  参数

  在Windows Workflow Foundation (WF),参数用于表示活动输入和输出的数据流。活动的参数组成了这个活动的特征。每个参数拥有一个定义好的方向:输入、输出或输入/输入。

  (5)按CTRL+SHIFT+B 编译解决方案,这次应该编译成功。

0