共用方式為


利用結構描述與對應來使用單元測試功能

此主題示範如何使用單元測試功能,以在 HelloWorld 協調流程範例中新增結構描述與對應的單元測試。

注意

對應的單元測試功能目前不支援多個輸入對應。

必要條件

您必須先遵循建置 HelloWorld 範例的步驟進行。 您可以在這裡找到這些步驟:HelloWorld (BizTalk Server 範例)

將單元測試專案新增至 HelloWorld 範例

  1. 在 Visual Studio 中,開啟 HelloWorld.sln 解決方案檔案。

  2. 在 方案總管中,以滑鼠右鍵按一下HelloWorld專案,然後按一下 [屬性]。

  3. 在 [專案Designer] 中,按一下[部署] 屬性頁索引標籤,並將 [啟用單元測試] 設定為 True

  4. 儲存所做的變更,關閉專案屬性頁。

  5. 在主功能表中,按一下 [ 建置],然後按一下 [ 重建方案]。

  6. 在主功能表上,按一下 [ 測試],然後按一下 [ 新增測試]。

  7. 在 [新增測試] 對話方塊中,選取 [新增至測試專案] 欄位的 [建立新的 Visual C# 測試專案]。 在 [範本] 清單中選取[單元測試精靈],然後按一下 [確定]。

  8. 在 [ 新增測試專案 ] 對話方塊中,將專案名稱保留為 TestProject1 ,然後按一下 [ 建立]。

  9. 在 [建立單元測試] 對話方塊中,展開類型,然後選取Microsoft.Samples.BizTalk.HelloWorld.POSchema節點下的POSchema () 建構函式。 同時選取Microsoft.Samples.BizTalk.HelloWorld.POToInvoice節點下的POToInvoice () 建構函式。 下圖顯示應要選取的項目。 進行如下所示的選取專案之後,請按 [確定]。

    顯示 [建立單元測試] 對話方塊的影像。

新增測試程式碼以測試結構描述與對應

  1. 從 [新增參考] 對話方塊中的[.NET] 索引標籤,將下列參考新增至TestProject1專案:

    • Microsoft.BizTalk.TestTools

    • Microsoft XLANG/s 基底型別

  2. 在 [方案總管] 中,開啟 POSchemaTest.cs

  3. 捲動至檔案底部,並以下列程式碼取代 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));
    }
    
  4. 在 [方案總管] 中,開啟 POToInvoiceTest.cs,然後在該檔案頂端新增下列指示詞:

    
    using System.IO;
    
  5. 捲動至檔案底部,並使用範例 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));
    }
    

建置和執行單元測試

  1. 在 [方案總管] 中,以滑鼠右鍵按一下[TestProject1],然後按一下 [建置]。

  2. 在主功能表上,按一下 [ 測試],然後在 [Windows ] 清單中,按一下 [ 測試檢視]。

  3. 在 [測試檢視] 視窗中,以滑鼠右鍵按一下 [POSchemaInstanceValidationTest],然後按一下 [ 執行選取專案]。 確認您在 [測試結果] 視窗中看到 [通過 ]。

  4. 在 [測試檢視] 視窗中,以滑鼠右鍵按一下 POToInvoiceMapTest,然後按一下 [ 執行選取專案]。 確認您在 [測試結果] 視窗中看到 [通過 ]。

  5. 如果任何測試失敗,您可以在 [測試結果] 視窗中,按兩下該測試,查看導致該測試失敗的判斷提示或例外狀況。

測試程式碼摘要

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。

另請參閱

使用單元測試功能搭配管線使用單元測試 (Visual Studio)