スキーマとマップを含む単体テスト機能の使用
このトピックでは、単体テスト機能を使用してスキーマとマップの単体テストを HelloWorld オーケストレーション サンプルに追加する方法を示します。
Note
現時点において、マップ用の単体テスト機能では、複数の入力マップはサポートされていません。
前提条件
最初に、HelloWorld サンプルの作成手順に従う必要があります。 これらの手順については、HelloWorld (BizTalk Server サンプル) を参照してください。
HelloWorld サンプルへの単体テスト プロジェクトの追加
Visual Studio で、HelloWorld.sln ソリューション ファイルを開きます。
ソリューション エクスプローラーで、HelloWorld プロジェクトを右クリックし、[プロパティ] をクリックします。
[プロジェクト Designer] で、[配置プロパティ] ページ タブをクリックし、[単体テストを有効にする] を に
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 メッセージを使用してマップをテストしました。 これにより、SampleInvoiceOutput.xml が HelloWorld ディレクトリで作成されました。