このトピックでは、単体テスト機能を使用して、HelloWorld オーケストレーションの例でスキーマとマップの単体テストを追加する方法について説明します。
注
現在、マップの単体テスト機能では、複数の入力マップはサポートされていません。
[前提条件]
まず、HelloWorld サンプルをビルドするための手順に従う必要があります。 これらの手順については、HelloWorld (BizTalk Server サンプル) を参照してください。
HelloWorld サンプルへの単体テスト プロジェクトの追加
Visual Studio で、HelloWorld.sln ソリューション ファイルを開きます。
ソリューション エクスプローラーで、 HelloWorld プロジェクトを右クリックし、[ プロパティ] をクリックします。
プロジェクト デザイナーで[ 配置 ]プロパティ ページ タブをクリックし、[ 単体テストを有効にする] を
True
に設定します。変更を保存するプロジェクトのプロパティ ページを閉じます。
メイン メニューで、[ ビルド] をクリックし、[ ソリューションのリビルド] をクリックします。
メイン メニューの [ テスト] をクリックし、[ 新しいテスト] をクリックします。
[新しいテストの追加] ダイアログ ボックスで、[テスト プロジェクトに追加] フィールドの [新しい Visual C# テスト プロジェクトの作成] を選択します。 [テンプレート] ボックスの一覧で [単体テスト ウィザード] を選択し、[OK] をクリックします。
[ 新しいテスト プロジェクト ] ダイアログ ボックスで、プロジェクト名を TestProject1 のままにして、[ 作成] をクリックします。
[単体テストの作成] ダイアログ ボックスで、型を展開し、Microsoft.Samples.BizTalk.HelloWorld.POSchema ノードの下にある POSchema() コンストラクターを選択します。 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice ノードの下にある POToInvoice() コンストラクターも選択します。 次の図は、行う必要がある選択内容を示しています。 以下に示す選択を行った後、 OK キーを押します。
[
スキーマとマップをテストするためのテスト コードの追加
[参照の追加] ダイアログの [.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 が作成されました。