利用結構描述與對應來使用單元測試功能
此主題示範如何使用單元測試功能,以在 HelloWorld 協調流程範例中新增結構描述與對應的單元測試。
注意
對應的單元測試功能目前不支援多個輸入對應。
必要條件
您必須先遵循建置 HelloWorld 範例的步驟進行。 您可以在這裡找到這些步驟:HelloWorld (BizTalk Server 範例)
將單元測試專案新增至 HelloWorld 範例
在 Visual Studio 中,開啟 HelloWorld.sln 解決方案檔案。
在 方案總管中,以滑鼠右鍵按一下HelloWorld專案,然後按一下 [屬性]。
在 [專案Designer] 中,按一下[部署] 屬性頁索引標籤,並將 [啟用單元測試] 設定為
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;
捲動至檔案底部,並使用範例 PO 輸入訊息測試地圖的程式碼取代 POToInvoiceConstructorTest 方法:
[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 map 相關聯的 C# 類別衍生自 Microsoft.BizTalk.TestTools.Mapper.TestableMapBase 類別。 POToInvoiceMaptest方法使用POToInvoice類別的TestMap方法,使用相同的 SamplePOInput.xml 訊息來測試地圖。 這會導致在 HelloWorld 目錄中建立 SampleInvoiceOutput.xml。