UIテストを自動化しようとしても、UIテストのコードは記述しにくく、記述方法に一貫性がない、などの理由から、自動化をあきらめる場合が多いのではないだろうか。.NETの開発においても単体テストの自動化は一般的に行われるようになってきているものの、UIテストの自動化はそういった理由で実現が難しく、あまり行われていないのが現状だ。UIオートメーション(以下UIオートメーション。詳細後述)と、テスト・ツールであるNUnitを使用して、UIテストを自動化する方法を紹介する(NUnitについては「テスト駆動開発ツール最前線」を参照してほしい)。Foundation(WPF)に含まれている。XP以降)で使用できる。このUIオートメーションを利用することで、以下のアプリケーションのUIを操作できる。Windowsアプリケーション(Win32)Windowsフォーム・アプリケーション(.NET)WPFアプリケーション(.NET)●UIオートメーション・モデルUIオートメーションでは、UIの各要素は「UIオートメーション・ツリー」というツリー構造でオブジェクトに格納される。このUIオートメーション・ツリーでは、デスクトップをルート要素とする。ツリーの各要素(フォームやボタンなど)はAutomationElementオブジェクトとして操作できる。ツリーに対してフィルタ処理を行い、特定のAutomationElementのみを含むビューを作成することもできる。AutomationElementオブジェクトでは、型と機能が分離されている。それらはコントロール型(型)とコントロール・パターン(機能)で表される。●コントロール型コントロール型は、各要素がどのようなコントロール型かを表す識別子であり、各要素でサポートしているコントロール・パターン、プロパティ、ツリー構造を識別する。ボタンのコントロール型は、Buttonコントロール型である。●コントロール・パターンコントロール・パターンは、各要素で使用できるメソッド、プロパティ、イベント、リレーションシップ(=複数の子コントロールで作成された集約コントロール(例えばコンボボックスなど)の各要素の親子関係)が定義されている。Buttonコントロール型でサポートしているのは、InvokePatternコントロール・パターンである。1つのコントロール型に対して複数のコントロール・パターンが存在する場合もある。Windowsフォーム・アプリケーション)を準備し、UIオートメーションを使用するテスト・クラスについて解説する。本稿のサンプルは、以下の動作環境で確認を行った。サンプル・コードはC#で記述している。EditionNUnit-2.4.7■テスト対象サンプル・アプリケーションの準備まずは「テスト対象サンプル・アプリケーション」として以下のようなアプリケーションを用意する。このアプリケーションは、次の機能だけを持つ単純なアプリケーションである。【機能】テキストボックスに文字列を入力して、[追加]ボタンを押下すると、入力した文字列がリストボックスに追加される。Windowsフォームには、次の画面のように、テキストボックス、ボタン、リストボックスを配置している。テスト対象サンプル・アプリケーション以下のコントロールを配置したWindowsフォーム・アプリケーションを作成する。カッコ内はコントロールの名前を示す。TextBoxコントロール(txtInput)。Buttonコントロール(btnAdd)。ListBoxコントロール(lstResults)。ボタンがクリックされたときのClickイベント・ハンドラに次のコードを記述する。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。