特集:効率的なデータベース開発の実践

DBアクセス用のXML Webサービスとは?

初音玲
2009/02/06

XML Webサービスの単体テストの実行

 Visual Studio 2008のProfessional Edition以上のエディションには、テスト・プロジェクトを作成して単体テストを行う機能が備わっている(Standard EditionでもNUnitなどを導入することで、単体テストを作成することは可能。Visual Studio 2005ではTeam SuiteやTeam Test Editionでしかテスト・プロジェクトを作成できないが、そのほかのエディションでもNUnitを活用して単体テスト可能だ)。

 次に先ほど作成したXML Webサービスの動作を検証する単体テストを作成してみよう。

(1)ソリューションへのテスト・プロジェクトの追加

 先ほどのXML Webサービスのソリューションに対してテスト・プロジェクトを追加するソリューションをIDEで開いている状態で、メニュー・バーから[ファイル]−[追加]−[新しいプロジェクト]を実行して、[新しいプロジェクトの追加]ダイアログを表示する。

図7 [新しいプロジェクトの追加]ダイアログにおけるテスト・プロジェクトの追加

 [プロジェクトの種類]で「テスト」を選択し、[テンプレート]として「テスト プロジェクト」を選択する。[プロジェクト名]は、「<テスト対象のプロジェクト名>+Test」と付けると分かりやすいだろう(本稿の例では「SimpleServiceTest」とした)。保存する[場所]は、必ずXML Webサービスのルート・フォルダとは別の位置を指定する(Webサービスの中には単体テストを含めないため)。

 最後に[OK]ボタンをクリックしてプロジェクトを作成すると、[ソリューション エクスプローラ]の内容は次の画面のようになる。

図8 テスト・プロジェクトが追加されたソリューション([ソリューション エクスプローラ]ウィンドウ)
テスト・プロジェクトを追加すると、[ソリューション エクスプローラ]ウィンドウはこのようになる。
  ASP.NET Webサービス・プロジェクト。
  テスト・プロジェクト。
  手動テストは不要なので削除。

 テスト・プロジェクトを追加した直後には、そのプロジェクト内に「ManualTest1.mht」というファイルが存在するが、これは手動テスト用のひな型ファイルであり、今回は不要なので削除する。プロジェクト内の「UnitTest1.vb」ファイルが、単体テストを記述するためのもので、本稿ではこれを編集していく。

(2)Web参照の追加

 XML Webサービスをテストするには、そのWebサービスを参照するように設定しなければならない。

 これには[ソリューション エクスプローラ]でテスト・プロジェクトを右クリックしてコンテキスト・メニューを表示して[Web 参照の追加]をクリックする。

 これにより[Web 参照の追加]ダイアログが表示されるので、中央の[Web サービスの参照の開始]というHTML表示内の[このソリューションの Web サービス]というリンクをクリックして、その後は下の図9のように指定する。

図9 [Web 参照の追加]ダイアログにおけるXML Webサービスへの参照設定
[このソリューションの Web サービス]ページで[Service]リンクをクリック。
すると「図5 デバッグ実行中のXML WebサービスのWebブラウザでの表示」と同じ内容のページが表示されるので、右の[Web 参照名]テキストボックスに任意の名前(この例では「localhost」)を入力して[参照の追加]ボタンをクリックする(なお、ここで指定した名前は、コードを記述するときに使用するWebサービス・クラスが所属する名前空間の名前になる)。

(3)テスト・コードの実装

 UnitTest1.vbファイルの中身は普通のクラス・ファイルと同じだ。テスト・コードはTestMethod属性を付与したメソッド(Public Sub TestMethod1)に記述する。次のコードの太字部分が今回実装したテスト・コードである。

<TestClass()> _
Public Class UnitTest1
  ……中略……

  <TestMethod()> _
  Public Sub TestMethod1()
    Using webs As New localhost.Service
      Assert.AreEqual("Hello World", webs.HelloWorld(), _
        "戻り値異常")
    End Using
  End Sub

End Class
単体テスト・コードの記述(UnitTest1.vbファイル)
「localhost」は先ほどの[Web 参照名]として指定したものである。「Service」はWebサービスの名前で、「HelloWorld」はそれに含まれるWebメソッドだ。このように、SOAP形式のXML Webサービスは、クライアントで通常のメソッドと同じように呼び出せる。

 ここでは、localhost名前空間のServiceクラスのインスタンス(webs)を生成して、Assert.AreEqualメソッドで“Hello World”と「Webメソッドの戻り値」(=webs.HelloWorld())を比較し、同じ値ならば成功を記録し、異なる値ならば失敗を記録している。

 これで単体テストの作成が完了したので、テストを実施してみよう。

(4)テストを実施する

 これには、ソリューションのスタートアップをテスト・プロジェクトに切り替えて(具体的には、[ソリューション エクスプローラ]でテスト・プロジェクトを右クリックして表示されるコンテキスト・メニューから[スタートアップ プロジェクトに設定]をクリックして)、メニュー・バーの[デバッグ]−[デバッグ開始](もしくは[デバッグなしで開始])を実行すればよい。

 テスト結果は、下の図10のように、[テスト結果]ウィンドウに成功なら緑色のアイコン、失敗なら赤色のアイコンで、一目瞭然(りょうぜん)に一覧表示される。

図10 [テスト結果]ウィンドウにおけるテスト結果の一覧表示(上:成功した場合、下:失敗した場合)

 以上がXML Webサービスの開発方法、単体テスト方法の基礎だ。以降では、この基礎を踏まえ、DBにアクセスして、最適化された結果を返すXML Webサービス(のWebメソッド)を作成していこう。


 INDEX
  [特集]効率的なデータベース開発の実践
  DBアクセス用のXML Webサービスとは?
    1.DBアクセス用のXML Webサービス
    2.XML Webサービスの作成
  3.XML Webサービスの単体テストの実行
    4.XML WebサービスのWebメソッドへのパラメータの考察
    5.DBアクセスXML Webサービスを作成する
    6.DBアクセスXML Webサービスを使ってみる


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH