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 將文件(可在 <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>