使用 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 支援使用此步驟中檔案名的唯一識別碼;這可以在 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>