对架构和映射使用单元测试功能

本主题介绍如何在 HelloWord 工作流程示例中使用单元测试功能添加架构和映射。

注意

用于映射的单元测试功能当前不支持多输入映射。

必备条件

您必须首先按照以下步骤构建 HelloWorld 示例。 可在此处找到这些步骤:HelloWorld (BizTalk Server 示例)

将单元测试项目添加到 HelloWorld 示例

  1. 在 Visual Studio 中,打开 HelloWorld.sln 解决方案文件。

  2. 在解决方案资源管理器中,右键单击 HelloWorld 项目,然后单击“属性”。

  3. 在“Project Designer”中,单击“部署”属性页选项卡,并将“启用单元测试”设置为 True

  4. 关闭项目属性页,保存更改。

  5. 在main菜单中,单击“生成”,然后单击“重新生成解决方案”。

  6. 在“main”菜单上,单击“测试”,然后单击“新建测试”。

  7. “添加新测试 ”对话框中,为“添加到测试项目”字段选择“ 创建新的 Visual C#测试项目 ”。 在“模板”列表中选择“单元测试向导”,然后单击“确定”。

  8. 在“ 新建测试项目 ”对话框中,将项目名称保留为 TestProject1 ,然后单击“ 创建”。

  9. 在“创建单元测试”对话框中,展开类型并选择 Microsoft.Samples.BizTalk.HelloWorld.POSchema 节点下的 POSchema () 构造函数。 此外,在 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice 节点下选择 POToInvoice () 构造函数。 下图显示了应进行的选择。 进行下面所示的选择后,按 “确定”。

    显示“创建单元测试”对话框的图像。

添加测试代码以测试架构和映射

  1. 从 “添加引用” 对话框中的 “.NET” 选项卡中添加对 TestProject1 项目的以下引用:

    • Microsoft.BizTalk.TestTools

    • Microsoft XLANG/s 基本类型

  2. 在解决方案资源管理器中,打开 POSchemaTest.cs

  3. 滚动到文件底部,将 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));
    }
    
  4. 在解决方案资源管理器中,打开 POToInvoiceTest.cs 并在该文件顶部添加以下指令:

    
    using System.IO;
    
  5. 滚动到文件底部,将 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));
    }
    

生成和运行单元测试

  1. 在解决方案资源管理器中,右键单击“TestProject1”,然后单击“生成”。

  2. 在main菜单上,单击“测试”,然后在 Windows 列表中单击“测试视图”。

  3. 在“测试视图”窗口中,右键单击“ POSchemaInstanceValidationTest”,然后单击“ 运行所选内容”。 验证是否在“测试结果”窗口中看到 “已通过 ”。

  4. 在“测试视图”窗口中,右键单击“ POToInvoiceMapTest”,然后单击“ 运行所选内容”。 验证是否在“测试结果”窗口中看到 “已通过 ”。

  5. 如果任何测试失败,你可以双击“测试结果”窗口中的测试以查看导致该测试失败的添加或异常。

测试代码摘要

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。

另请参阅

将单元测试功能与管道配合使用 (Visual Studio)