3.创建测试用例
在这个任务中,你再将在真正实现活动之前建立测试用例。
(1)添加下列命名空间到SayHelloTests.cs (C#) 文件或SayHelloTests.vb (Visual Basic):
using HelloWorkflow;
Imports System.Activities
(2)建立一个测试用例用于验证工作流执行正确。请打开SayHelloTests.cs (C#)或SayHelloTests.vb (Visual Basic),将TestMethod1方法重命名为ShouldReturnGreetingWithName。
虽然目前SayHello活动并不接受任何参数,但是我们将会使用代码调用它,就像它能接受参数一样 。这将会让我们思考如何设计活动的接口并使用它。如果Visual Studio提示UserName属性没有被定义,请不要担心。替换ShouldReturnGreetingWithName 中的代码如下C#
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 编译解决方案,这次应该编译成功。