Testing a WF program with a unit test framework
In this task, we will create a Test Project to do unit testing for a WF program.
How to do it...
Add a Test Project to the solution:
Add a Test Project to the
Chapter01
solution and name the project asUnitTestForWFProgram
as shown in the following screenshot:Add a workflow file to the Test Project:
Add a workflow activity to this project. Right-click the newly created Test Project, then go to Add | New Items… | Workflow | Activity and name the activity as
WorkflowForTest.xaml
. In the opening WF designer, create anOutArgument
as OutMessage. Next, drag an Assign activity to the Designer panel and assign the string "Test Message" to the OutMessage argument as shown in the following screenshot:Tip
In WF4, workflow is actually an Activity class. We could see "Workflow" as a conception from a macroeconomic viewpoint, while considering "Activity" as a development concept.
Create unit test code:
Open the
UnitTest1.cs
file and fill the file with following code:using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Activities; namespace UnitTestForWFProgram { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var output = WorkflowInvoker.Invoke(new WorkflowForTest()); Assert.AreEqual("Test Message", output["OutMessage"]); } } }
Run it:
Set
UnitTestForWorkflow
as Startup project. Press Ctrl+F5 to build and run the test without debugging as shown in the following screenshot:
How it works...
In the preceding code snippet, [TestClass]
indicates it is a unit test class, whereas [TestMethod]
indicates a test method. When the Test Project runs, the test method will be executed automatically.
There's more...
In real application development, we can also create a separate Unit Test project and add a reference to the target project.