次の方法で共有


スキーマとマップでの単体テスト機能の使用

このトピックでは、単体テスト機能を使用して、HelloWorld オーケストレーションの例でスキーマとマップの単体テストを追加する方法について説明します。

現在、マップの単体テスト機能では、複数の入力マップはサポートされていません。

[前提条件]

まず、HelloWorld サンプルをビルドするための手順に従う必要があります。 これらの手順については、HelloWorld (BizTalk Server サンプル) を参照してください。

HelloWorld サンプルへの単体テスト プロジェクトの追加

  1. Visual Studio で、HelloWorld.sln ソリューション ファイルを開きます。

  2. ソリューション エクスプローラーで、 HelloWorld プロジェクトを右クリックし、[ プロパティ] をクリックします。

  3. プロジェクト デザイナーで[ 配置 ]プロパティ ページ タブをクリックし、[ 単体テストを有効にする]Trueに設定します。

  4. 変更を保存するプロジェクトのプロパティ ページを閉じます。

  5. メイン メニューで、[ ビルド] をクリックし、[ ソリューションのリビルド] をクリックします。

  6. メイン メニューの [ テスト] をクリックし、[ 新しいテスト] をクリックします。

  7. [新しいテストの追加] ダイアログ ボックスで、[テスト プロジェクトに追加] フィールドの [新しい Visual C# テスト プロジェクト作成] を選択します。 [テンプレート] ボックスの一覧で [単体テスト ウィザード] を選択し、[OK] をクリックします

  8. [ 新しいテスト プロジェクト ] ダイアログ ボックスで、プロジェクト名を TestProject1 のままにして、[ 作成] をクリックします。

  9. [単体テストの作成] ダイアログ ボックスで、型を展開し、Microsoft.Samples.BizTalk.HelloWorld.POSchema ノードの下にある POSchema() コンストラクターを選択します。 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice ノードの下にある POToInvoice() コンストラクターも選択します。 次の図は、行う必要がある選択内容を示しています。 以下に示す選択を行った後、 OK キーを押します。

    単体テストの作成] ダイアログ ボックスを示す画像。[

スキーマとマップをテストするためのテスト コードの追加

  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. ファイルの一番下までスクロールし、 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));
    }
    

単体テストのビルドと実行

  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 マップに関連付けられている C# クラスは 、Microsoft.BizTalk.TestTools.Mapper.TestableMapBase クラスから派生しました。 POToInvoiceMaptest メソッドは、POToInvoice クラスの TestMap メソッドを使用して、同じ SamplePOInput.xml メッセージを使用してマップをテストしました。 その結果、HelloWorld ディレクトリに SampleInvoiceOutput.xml が作成されました。

こちらもご覧ください

パイプラインでの単体テスト機能の使用 (Visual Studio)