BizUnit 提供了两种方法来定义测试:通过 XML 配置文件和 Excel 工作表。 本主题重点介绍如何使用 XML 配置文件定义测试;但是,还应查看 BizUnit SDK,因为它提供了有关如何使用 Excel 定义 BizUnit 测试用例的有趣示例。 此外,你可能希望调查 BizUnit 设计器工具,该工具提供了一个 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 将文档(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>