对架构和映射使用单元测试功能
本主题介绍如何在 HelloWord 工作流程示例中使用单元测试功能添加架构和映射。
注意
用于映射的单元测试功能当前不支持多输入映射。
必备条件
您必须首先按照以下步骤构建 HelloWorld 示例。 可在此处找到这些步骤:HelloWorld (BizTalk Server 示例)
将单元测试项目添加到 HelloWorld 示例
在 Visual Studio 中,打开 HelloWorld.sln 解决方案文件。
在解决方案资源管理器中,右键单击 HelloWorld 项目,然后单击“属性”。
在“Project Designer”中,单击“部署”属性页选项卡,并将“启用单元测试”设置为
True
。关闭项目属性页,保存更改。
在main菜单中,单击“生成”,然后单击“重新生成解决方案”。
在“main”菜单上,单击“测试”,然后单击“新建测试”。
在 “添加新测试 ”对话框中,为“添加到测试项目”字段选择“ 创建新的 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”,然后单击“生成”。
在main菜单上,单击“测试”,然后在 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 消息测试地图。 这会在 HelloWorld 目录中创建 SampleInvoiceOutput.xml。