本主題示範如何使用單元測試功能,在 HelloWorld 協調流程範例中新增架構和對應的單元測試。
備註
地圖的單元測試功能目前不支援多個輸入地圖。
先決條件
您必須先遵循建置 HelloWorld 範例的步驟。 這些步驟可在這裡找到: HelloWorld (BizTalk Server 範例)
將單元測試專案新增至 HelloWorld 範例
在Visual Studio中,開啟HelloWorld.sln方案檔。
在 [方案總管] 中,以滑鼠右鍵按兩下 HelloWorld 項目,然後按兩下 [ 屬性]。
在 [項目設計工具] 中,按下 [ 部署 ] 屬性頁索引標籤,並將 [ 啟用單元測試 ] 設定為
True。關閉儲存變更的項目屬性頁面。
在主功能表中,按兩下 [ 建置],然後按兩下 [ 重建方案]。
在主功能表上,按兩下 [ 測試],然後按兩下[ 新增測試]。
在 [新增測試] 對話框中,選取 [新增至測試專案] 字段的 [建立新的 Visual C# 測試專案]。 在 [範本] 清單中選取 [單元測試精靈],然後按兩下 [確定]。
在 [ 新增測試專案 ] 對話框中,將專案名稱保留為 TestProject1 ,然後按兩下 [ 建立]。
在 [建立單元測試] 對話框中,展開類型,然後選取 Microsoft.Samples.BizTalk.HelloWorld.POSchema 節點底下的 POSchema() 建構函式。 此外,請選取 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice 節點底下的 POToInvoice() 建構函式。 下圖顯示應作的選擇項目。 進行如下所示的選取項目之後,請按 [確定]。
新增測試程式代碼來測試結構和映射
從 [新增參考] 對話框中的 [.NET] 索引標籤,將下列參考新增至 TestProject1 專案:
Microsoft.BizTalk.TestTools
Microsoft XLANG/s 基底類型
在 [方案總管] 中,開啟 POSchemaTest.cs。
捲動至檔案底部,並以下列程序代碼取代 POSchemaConstructorTest 方法,以驗證範例 PO 輸入訊息:
[TestMethod()] public void POSchemaInstanceValidationTest() { POSchema target = new POSchema(); //=== The SamplePOInput.xml file from <Samples Path>\Orchestrations\HelloWorld ===// string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml"; //=== Validate the SamplePOInput message against the schema ===// Assert.IsTrue(target.ValidateInstance(strSourcePO_XML, Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML)); }在方案總管中開啟 POToInvoiceTest.cs,並將下列指令新增至該檔案的開頭:
using System.IO;捲動至檔案底部,並以下列程式代碼取代 POToInvoiceConstructorTest 方法,以使用範例 PO 輸入訊息來測試地圖:
[TestMethod()] public void POToInvoiceMapTest() { POToInvoice target = new POToInvoice(); //=== Use the HelloWorld sample directory path for the message files ===// string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml"; string strDestInvoice_XML = testContextInstance.TestDir + "..\\..\\..\\SampleInvoiceOutput.xml"; //=== Test the map by using the TestMap method of the TestableMapBase class ===// target.ValidateOutput = true; target.TestMap(strSourcePO_XML, Microsoft.BizTalk.TestTools.Schema.InputInstanceType.Xml, strDestInvoice_XML, Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML); //=== Output file should be created as a result of testing the map ===// Assert.IsTrue(File.Exists(strDestInvoice_XML)); }
建置和執行單元測試
在 [方案總管] 中,以滑鼠右鍵點選 TestProject1,然後點選 建置。
在主功能表上,按兩下 [ 測試],然後在 [Windows ] 清單中,按兩下 [ 測試檢視]。
在 [測試檢視] 視窗中,右鍵點選 [POSchemaInstanceValidationTest],然後點選 [執行選取]。 確認您在 [測試結果] 視窗中看到 [通過 ]。
在 [測試檢視] 視窗中,以滑鼠右鍵點擊 POToInvoiceMapTest,然後點擊 執行選取。 確認您在 [測試結果] 視窗中看到 [通過 ]。
如果有任何測試失敗,您可以在 [測試結果] 視窗中按兩下測試,以查看造成該測試失敗的判斷提示或例外狀況。
測試程式代碼摘要
為 HelloWorld 專案啟用單元測試時,與 POSchema.xsd 相關聯的 C# 類別衍生自 Microsoft.BizTalk.TestTools.Schema.TestableSchemaBase 類別。 TestProject1 中的 POSchemaInstanceValidationTest 方法會使用 POSchema 類別的 ValidateInstance 方法,針對 PO 架構驗證 SamplePOInput.xml。
同樣地,針對 HelloWorld 專案啟用單元測試時,與 POToInvoice.btm 映射相關的 C# 類別衍生自 Microsoft.BizTalk.TestTools.Mapper.TestableMapBase 類別。 POToInvoiceMaptest 方法使用 POToInvoice 類別的 TestMap 方法,使用相同的 SamplePOInput.xml 訊息來測試地圖。 這會導致在 HelloWorld 目錄中建立 SampleInvoiceOutput.xml。