本主题演示如何使用单元测试功能为 HelloWorld 业务流程示例中的架构和映射添加单元测试。
注释
地图的单元测试功能目前不支持多个输入地图。
先决条件
必须先按照构建 HelloWorld 示例的步骤进行操作。 可在此处找到这些步骤: HelloWorld (BizTalk Server 示例)
将单元测试项目添加到 HelloWorld 示例
在 Visual Studio 中,打开HelloWorld.sln解决方案文件。
在解决方案资源管理器中,右键单击 HelloWorld 项目,然后单击“ 属性”。
在项目设计器中,单击 “部署 属性”页选项卡,并将 “启用单元测试 ”设置为
True
。关闭保存更改的项目属性页。
在主菜单中,单击“ 生成”,然后单击“ 重新生成解决方案”。
在主菜单上,单击“ 测试”,然后单击“ 新建测试”。
在“添加新测试”对话框中,选择“为添加到测试项目”字段创建新的 Visual C# 测试项目。 在“模板”列表中选择“单元测试向导”,然后单击“确定”。
在“ 新建测试项目 ”对话框中,将项目名称保留为 TestProject1 ,然后单击“ 创建”。
在“创建单元测试”对话框中,展开类型并选择Microsoft.Samples.BizTalk.HelloWorld.POSchema 节点下的 POSchema() 构造函数。 此外,在 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice 节点下选择 POToInvoice() 构造函数。 下图显示了应进行的选择。 进行下面所示的选择后,按 “确定”。
添加测试代码以测试模式和映射
从“添加引用”对话框中的 .NET 选项卡添加对 TestProject1 项目的以下引用:
Microsoft.BizTalk.TestTools
Microsoft XLANG/s 基类型
在解决方案资源管理器中,打开POSchemaTest.cs
滚动到文件的底部,并将 POSchemaConstructorTest 方法替换为以下代码,用于验证示例 PO 输入消息:
[TestMethod()] public void POSchemaInstanceValidationTest() { POSchema target = new POSchema(); //=== The SamplePOInput.xml file from <Samples Path>\Orchestrations\HelloWorld ===// string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml"; //=== Validate the SamplePOInput message against the schema ===// Assert.IsTrue(target.ValidateInstance(strSourcePO_XML, Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML)); }
在解决方案资源管理器中,打开POToInvoiceTest.cs,并将以下指令添加到该文件顶部:
using System.IO;
请滚动至文件底部,并将 POToInvoiceConstructorTest 方法替换为以下代码,该代码利用示例 PO 输入消息来测试映射:
[TestMethod()] public void POToInvoiceMapTest() { POToInvoice target = new POToInvoice(); //=== Use the HelloWorld sample directory path for the message files ===// string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml"; string strDestInvoice_XML = testContextInstance.TestDir + "..\\..\\..\\SampleInvoiceOutput.xml"; //=== Test the map by using the TestMap method of the TestableMapBase class ===// target.ValidateOutput = true; target.TestMap(strSourcePO_XML, Microsoft.BizTalk.TestTools.Schema.InputInstanceType.Xml, strDestInvoice_XML, Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML); //=== Output file should be created as a result of testing the map ===// Assert.IsTrue(File.Exists(strDestInvoice_XML)); }
生成并运行单元测试
在解决方案资源管理器中,右键单击 TestProject1,然后单击“ 生成”。
在主菜单上,单击“ 测试”,然后在 Windows 列表中单击“ 测试视图”。
在“测试视图”窗口中,右键单击 POSchemaInstanceValidationTest,然后单击“ 运行选择”。 验证你是否在“测试结果”窗口中看到通过。
在“测试视图”窗口中,右键单击 POToInvoiceMapTest,然后单击“ 运行选择”。 验证你是否在“测试结果”窗口中看到通过。
如果任何测试失败,可以在“测试结果”窗口中双击测试,以查看导致该测试失败的断言或异常。
测试代码摘要
为 HelloWorld 项目启用单元测试后,与 POSchema.xsd 关联的 C# 类派生自 Microsoft.BizTalk.TestTools.Schema.TestableSchemaBase 类。 TestProject1 中的 POSchemaInstanceValidationTest 方法使用 POSchema 类的 ValidateInstance 方法针对 PO 架构验证 SamplePOInput.xml。
同样,为 HelloWorld 项目启用单元测试时,与 POToInvoice.btm 映射关联的 C# 类派生自 Microsoft.BizTalk.TestTools.Mapper.TestableMapBase 类。 POToInvoiceMaptest 方法使用 POToInvoice 类的 TestMap 方法使用相同的 SamplePOInput.xml 消息测试地图。 这使得 SampleInvoiceOutput.xml 在 HelloWorld 目录中被创建。