使用 XML 配置文件定义测试

BizUnit 提供两种定义测试的方法:通过 XML 配置文件和 Excel 工作表。 本主题重点介绍如何使用 XML 配置文件定义测试;但是,还应查看 BizUnit SDK,因为它提供了有关如何使用 Excel 定义 BizUnit 测试用例的有趣示例。 此外,你可能希望调查 BizUnit Designer工具,该工具提供了一个 GUI,允许快速创建 BizUnit 测试用例。 本主题概述了如何使用 XML 配置使用非常简化的方案定义测试用例。

使用 XML 配置定义 BizUnit 测试用例的概述

如前所述,为了便于说明,此方案已简化。 请考虑一个示例消息传递应用程序,如下所示。 假设此应用程序的正常功能行为是 BizTalk 通过文件接收位置接收 XML 文件,然后根据订阅将其发送到相应的订阅服务器。 若要有效验证此方案,请务必在测试中执行以下步骤:

  1. 设置环境以确保其处于一致状态,并准备好运行测试:

    • 这是通过删除所使用的两个文件位置中存在的任何文件来完成的。
  2. 运行测试以验证功能:

    • 在文件接收位置轮询的文件夹中创建有效的 XML 消息。

    • 验证正确的 XML 消息是否放置在出站文件夹位置。

    • 验证应涵盖消息的架构和有效负载信息。 (通常应检查几个关键字段。)

  3. 清理环境以确保环境与执行测试之前的状态相同:

    • 删除所使用的两个文件位置中存在的任何文件。

    示例 BizTalk 消息传递应用程序
    示例 BizTalk 消息传递应用程序

    每个测试用例都以 TestCase XML 标记开头和结尾;testName 参数将传递到此,如此处所示。

<TestCase testName="Test_01_FILECopyWithXmlValidation">  

然后进入 TestSetup 阶段,在此阶段,确保环境处于一致状态以运行测试。 在此示例中,我们将删除 TestData 目录中包含的任何 XML 消息。 这是使用 FileDeleteMultipleStep 完成的

<TestSetup>  
   <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
      <Directory>..\..\..\TestData\</Directory>  
         <SearchPattern>*.xml</SearchPattern>   
      </TestStep>  
</TestSetup>  

然后,我们输入测试的最关键部分,即测试执行阶段。 此阶段可以包含多个测试步骤。 在此示例中,我们使用 FileCreateStep 将 SourcePath> 标记) 的文档 (InDoc1.xml <复制到接收位置使用的文件删除。 请务必注意,在此步骤中,BizUnit 支持对文件名使用唯一标识符;这可以通过 CreatePath 标记中的 %Guid% 引用来查看。

完成此操作后,需要使用 FileValidateStep 来验证是否已创建出站消息。 你会注意到,此步骤允许指定超时值 () 、目录和搜索模式以毫秒为单位。 此外, 使用 DeleteFile 标记可以指定是否要在验证后删除文件。 最后,还应注意验证包含 XPath 查询,该查询验证 XML 消息中的 PONumber 节点 (它检查值是否为 PONumber_0。) 检查和验证任何出站消息的有效负载是使用 BizUnit 时应遵循的指导原则的另一个示例。

<TestExecution>  
   <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep">  
      <SourcePath>..\..\..\TestData\InDoc1.xml</SourcePath>  
      <CreationPath>..\..\..\Rec_03\TransactionId_%Guid%.xml</CreationPath>  
   </TestStep>  
   <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep">  
      <Timeout>3000</Timeout>  
      <Directory>..\..\..\Rec_03\</Directory>  
      <SearchPattern>TransactionId_*.xml</SearchPattern>  
      <DeleteFile>true</DeleteFile>  
      <ValidationStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep">  
         <XmlSchemaPath>..\..\..\TestData\PurchaseOrder.xsd</XmlSchemaPath>  
         <XmlSchemaNameSpace>http://SendMail.PurchaseOrder</XmlSchemaNameSpace>  
         <XPathList>  
            <XPathValidation query="/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']/*[local-name()='PONumber' and namespace-uri()='']">PONumber_0</XPathValidation>  
         </XPathList>  
      </ValidationStep>  
   </TestStep>  
</TestExecution>  

测试用例的最后一个阶段是清理。 如此处所示, FileDelete 测试步骤用于清理测试使用的目录。

<TestCleanup>  
   <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
      <Directory>..\..\..\TestData\</Directory>  
      <SearchPattern>*.xml</SearchPattern>   
   </TestStep>  
   <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
      <Directory>..\..\..\Rec_03\</Directory>  
      <SearchPattern>*.xml</SearchPattern>   
   </TestStep>  
</TestCleanup>  

希望此示例表明,在 BizUnit 中定义测试相对简单,并且使用此测试框架,你将能够快速开发测试用例,以提供应用程序的功能测试。

完整测试用例示例

此处包含完整的测试用例配置文件内容,供你参考:

<TestCase testName="Test_01_FILECopyWithXmlValidation">  
   <TestSetup>  
      <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
         <Directory>..\..\..\TestData\</Directory>  
            <SearchPattern>*.xml</SearchPattern>   
         </TestStep>  
   </TestSetup>  
   <TestExecution>  
      <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileCreateStep">  
         <SourcePath>..\..\..\TestData\InDoc1.xml</SourcePath>  
         <CreationPath>..\..\..\Rec_03\TransactionId_%Guid%.xml</CreationPath>  
      </TestStep>  
      <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileValidateStep">  
         <Timeout>3000</Timeout>  
         <Directory>..\..\..\Rec_03\</Directory>  
         <SearchPattern>TransactionId_*.xml</SearchPattern>  
         <DeleteFile>true</DeleteFile>  
         <ValidationStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.XmlValidationStep">  
            <XmlSchemaPath>..\..\..\TestData\PurchaseOrder.xsd</XmlSchemaPath>  
            <XmlSchemaNameSpace>http://SendMail.PurchaseOrder</XmlSchemaNameSpace>  
            <XPathList>  
               <XPathValidation query="/*[local-name()='PurchaseOrder' and namespace-uri()='http://SendMail.PurchaseOrder']/*[local-name()='PONumber' and namespace-uri()='']">PONumber_0</XPathValidation>  
            </XPathList>  
         </ValidationStep>  
      </TestStep>  
   </TestExecution>  
   <!-- Test cleanup: test cases should always leave the system in the state they found it -->  
   <TestCleanup>  
      <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
         <Directory>..\..\..\TestData\</Directory>  
         <SearchPattern>*.xml</SearchPattern>   
      </TestStep>  
      <TestStep assemblyPath="" typeName="Microsoft.Services.BizTalkApplicationFramework.BizUnit.FileDeleteMultipleStep">  
         <Directory>..\..\..\Rec_03\</Directory>  
         <SearchPattern>*.xml</SearchPattern>   
      </TestStep>  
   </TestCleanup>  
</TestCase>  

另请参阅

使用 BizUnit 优化自动测试