使用 XML 配置文件定义测试
BizUnit 提供两种定义测试的方法:通过 XML 配置文件和 Excel 工作表。 本主题重点介绍如何使用 XML 配置文件定义测试;但是,还应查看 BizUnit SDK,因为它提供了有关如何使用 Excel 定义 BizUnit 测试用例的有趣示例。 此外,你可能希望调查 BizUnit Designer工具,该工具提供了一个 GUI,允许快速创建 BizUnit 测试用例。 本主题概述了如何使用 XML 配置使用非常简化的方案定义测试用例。
使用 XML 配置定义 BizUnit 测试用例的概述
如前所述,为了便于说明,此方案已简化。 请考虑一个示例消息传递应用程序,如下所示。 假设此应用程序的正常功能行为是 BizTalk 通过文件接收位置接收 XML 文件,然后根据订阅将其发送到相应的订阅服务器。 若要有效验证此方案,请务必在测试中执行以下步骤:
设置环境以确保其处于一致状态,并准备好运行测试:
- 这是通过删除所使用的两个文件位置中存在的任何文件来完成的。
运行测试以验证功能:
在文件接收位置轮询的文件夹中创建有效的 XML 消息。
验证正确的 XML 消息是否放置在出站文件夹位置。
验证应涵盖消息的架构和有效负载信息。 (通常应检查几个关键字段。)
清理环境以确保环境与执行测试之前的状态相同:
- 删除所使用的两个文件位置中存在的任何文件。
示例 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>