SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 単体テスト機能大全

Visual Studioで作る単体テスト、UI操作の自動実行

Visual Studio 単体テスト機能大全(6)

UI操作を伴うテスト

 自動UIテストでは、さまざまな種類のアプリケーションをテスト対象にすることができます。今回は手順を覚えることを主眼に置くため、簡単なアプリケーションとして、Windowsに標準搭載の電卓を例に操作を行っていきます。

操作手順

 今回のUI操作のシナリオは以下のとおりです。

  1. [Windows]キー + [R]で[ファイル名を指定して実行]を表示
  2. キーボードで「calc.exe」と入力して電卓を実行
  3. マウスで[123]、[+]、[456]、[=]と順番に入力
  4. 計算結果が[579]であることを確認
  5. 電卓を終了

 では、VS 2010を起動して、テストプロジェクトを準備します(本稿に付属の事前のサンプルファイルはこの状態となっています)。次にソリューションエクスプローラーで、テストプロジェクトのコンテキストメニューから[追加]-[コード化されたUIテスト]を選択します。すぐに図1のように自動UIテストの作成方法を問うダイアログが表示されます。ここでは[操作の記録、UIマップの編集、またはアサーションの追加]を選択して、[OK]をクリックします。

図1:自動UIテストの作成方法
図1:自動UIテストの作成方法

 VS 2010が最小化され、しばらく待つとデスクトップ右下に図2のようなツールバーが表示されます。

図2:コード化されたUIテストビルダー
図2:コード化されたUIテストビルダー

 これは、テストビルダーと呼ばれるもので、このツールを利用してUI操作の記録を行い、操作記録をC#などのソースコードとして出力する作業を行います。このツールは左のボタンから順に記録の開始、記録されたステップの表示、アサーションの追加、コードの生成を行うためのボタンとなっています。ここでは、[記録の開始]をクリックして操作を開始します。[記録の開始]をクリックするとテストビルダーの表示が図3のようになります。

図3:記録中状態を示すテストビルダー
図3:記録中状態を示すテストビルダー

 一番左のアイコンが変更され、この状態が操作の記録中であることを示しています。記録を一時停止する場合は[記録の一時停止]ボタンを押すことで中断することができます。

 では、テストビルダーが図3の状態になっていることを確認し、冒頭に示した手順を実行します。手順3まで実施したら一度、[記録の一時停止]を押して作業を一時中止します。このときはテストビルダーの[記録されたステップの表示]をクリックすると図4のように記録された操作の一覧を確認することができます。

図4:記録された操作の一覧
図4:記録された操作の一覧

 この一覧は操作の記録中でも表示することができ、もし操作を間違えてしまった場合は記録された一覧から対象行を選択して、[Delete]キーを押せば記録を削除することができます。

 次に、電卓の計算結果が[579]になっていることを確認するために検証処理(自動UIテストではアサーションと呼びます)を追加します。アサーションを追加するためには今までに記録した操作を一度コード化する必要があるため、まずはテストビルダーで[コードの生成]をクリックし、図5の画面でメソッド名を決め、[追加と生成]ボタンをクリックします。

図5:記録された操作のコード化
図5:記録された操作のコード化

 コード化を行うと、テストビルダー右から2番目の[アサーションの追加]を利用できるようになります。[アサーションの追加]ではこのボタンをマウスでドラッグして、電卓の計算結果部分にドロップします。青い太枠がナビゲートしてくれるので適切なポイントでドロップするようにしてください。この操作がうまくいくと、図6のようにUIコントロールマップに読み取った情報が表示されます。

図6:UIコントロールマップ
図6:UIコントロールマップ

 今回は表示状態が[579]であることを確認するので、DisplayTextプロパティが579になっていることを確認し、[アサーションの追加]をクリックします。図7のようにアサーションに関する設定が表示されるので、そのまま[OK]をクリックします。

図7:アサーションの追加
図7:アサーションの追加

 アサーションの追加を行った後は、再度コードの生成を行って、今の操作に関するコードを生成しておきます。最後に[記録の再開]をクリックして、表示中の電卓を閉じる操作を行った後で、記録の一時停止、コードの生成を行うと一連の作業は終了となります。この時点でテストビルダーは閉じてしまって構いません。VS 2010に戻ると図8のように「CodedUITest1.cs」ファイルにCodedUITestMethod1メソッドがあり、メソッド内には3行のメソッド呼び出しが定義されています。

図8:生成された自動UIテスト
図8:生成された自動UIテスト

 これは、通常の単体テストメソッドと同じ扱いをすることができ、同じように実行することができます。試しに実行してみると図9のような結果を得ることができます。

図9:自動UIテストのテスト結果
図9:自動UIテストのテスト結果

 本稿に付属の「作業後のサンプルファイル(CodeZine-Test-06_after.zip)」は、図8までの作業を行い、テストを実行する直前の状態で保存したものとなっています。このサンプルはWindows 7を利用して作成しており、異なるOSでは動作しない可能性がありますのでご了承ください。

次のページ
まとめ

この記事は参考になりましたか?

Visual Studio 単体テスト機能大全連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ(リバティ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6273 2011/11/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー