使用 XML 配置文件定义测试

BizUnit 提供了两种方法来定义测试:通过 XML 配置文件和 Excel 工作表。 本主题重点介绍如何使用 XML 配置文件定义测试;但是,还应查看 BizUnit SDK,因为它提供了有关如何使用 Excel 定义 BizUnit 测试用例的有趣示例。 此外,你可能希望调查 BizUnit 设计器工具,该工具提供了一个 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 将文档(InDoc1.xml 可在 <SourcePath> 标签中看到)复制到接收位置使用的文件存放区。 请务必注意,BizUnit 支持在此步骤中使用文件名的唯一标识符;这可以通过 CreationPath 标记中的 %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 促进自动测试