再生中に特定のイベントを待機するようにコード化された UIT テストを設定

コード化された UI テストの再生では、テストに対して指示することで、ウィンドウの表示やプログレス バーの非表示などの特定のイベントが発生するまで待機することができます。 これを実行するには、次の表で説明されているように、該当する UITestControl.WaitForControlXXX() メソッドを使用します。 WaitForControlEnabled() メソッドで有効化されるコントロールを待機するコード化された UI テストの例については、「チュートリアル: コード化された UI テストの作成、編集、および保守」を参照してください。

UITestControl.WaitForControlXXX() メソッド

UITestControl.WaitForControlXXX() メソッド

説明

WaitForControlReady()

コントロールでマウスおよびキーボード入力を受け入れる準備が整うまで待機します。 エンジンは、すべての操作についてこの API を暗黙的に呼び出してコントロールの準備が整うまで待機し、その後、何らかの操作を実行します。 ただし、複雑なシナリオでは、明示的に呼び出すことが必要になる場合があります。

WaitForControlEnabled()

サーバーを呼び出すことでウィザードが入力の非同期の検証を実行するときに、コントロールが有効化されるまで待機します。 たとえば、このメソッドを使用してウィザードの [次へ] ボタンが有効化されるまで待機します。 このメソッドの使用例については、「チュートリアル: コード化された UI テストの作成、編集、および保守」を参照してください。

WaitForControlExist()

コントロールが UI に表示されるまで待機します。 たとえば、アプリケーションでパラメーターの検証が行われた後にエラー ダイアログの表示を必要とする場合などです。 検証にかかる時間は変化します。 このメソッドを使用してエラー ダイアログ ボックスを待機することができます。

WaitForControlNotExist()

コントロールが UI から非表示になるまで待機します。 たとえば、プログレス バーが表示されなくなるまで待機する場合などです。

WaitForControlPropertyEqual(String, Object)

指定されたコントロールのプロパティが指定された値になるまで待機します。 たとえば、ステータス テキストが "完了" になるまで待機します。

WaitForControlPropertyNotEqual(String, Object)

指定されたコントロールのプロパティが指定された値の逆になるまで待機します。 たとえば、編集ボックスが読み取り専用ではなくなる、つまり、編集可能になるまで待機します。

WaitForControlCondition(Predicate<UITestControl>)

指定された述語で true が返されるまで待機します。 これは、指定されたコントロールでの複合的な待機操作 (OR 条件など) で使用できます。 たとえば、次のコードに示されているように、ステータス テキストが "Succeeded" または "Failed" になるまで待機する場合があります。

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

WaitForCondition<T>(T, Predicate<T>)

上に示したメソッドはすべて UITestControl のインスタンス メソッドです。 この WaitForCondition メソッドは、静的なメソッドです。 このメソッドも指定された述語が true になるまで待機しますが、複数のコントロールで複合的な待機操作 (OR 条件など) で使用される場合があります。 たとえば、次のコードに示されているように、ステータス テキストが "Succeeded" になるか、エラー メッセージが表示されるまで待機する場合があります。

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

上記のメソッドはすべて次のように動作します。

  • 待機が成功すれば true を返し、失敗すれば false を返します。

  • 待機操作の暗黙的なタイムアウトは、WaitForReadyTimeout プロパティによって指定されます。 このプロパティの既定値は 60000 ミリ秒 (1 分) です。

  • メソッドには、ミリ秒単位の明示的なタイムアウトを取得するためのオーバーロードがあります。 ただし、待機操作の結果、コントロールが暗黙的に検索されたり、アプリケーションがビジー状態であったりすると、実際の待機時間が指定されたタイムアウトよりも長くなる可能性があります。

上で説明した機能は強力で柔軟性があり、ほとんどの条件を満たすと考えられます。 しかし、これらのメソッドでもニーズが満たされず、コード内で Wait(Int32) または Sleep(Int32) をコード化する必要がある場合は、Thread.Sleep() API の代わりに Playback.Wait() を使用することをお勧めします。 これには次の理由があります。

  • ThinkTimeMultiplier プロパティを使用してスリープの継続時間を変更できます。 既定ではこの変数は 1 ですが、値を増減させてコード全体で待機時間を変更することができます。 たとえば、低速なネットワークで特別にテストを実行する場合や、その他のパフォーマンスが低下している状況で、特定の位置で (または構成ファイル内で) この変数を 1.5 に変更すると、あらゆる位置の待機時間を 50% 余分に追加できます。

  • Playback.Wait() は、ユーザー取り消し\ブレーク操作の確認中に for ループ内の小さなチャンクで Thread.Sleep() を呼び出します (上記の計算後)。 つまり、Playback.Wait() を使用すると、スリープにならなかったり、例外が発生しても、待機が完了する前に再生を取り消すことができます。

注意

コード化された UI テスト エディターを使用すると、コード化された UI テストを簡単に変更できます。 Coded UI Test Editor (コード化された UI テスト エディター) を使用すると、テスト メソッドを検索、表示、および編集できます。 また、UI コントロール マップ内の UI 操作および関連コントロールを編集することもできます。 Coded UI Test Editor (コード化された UI テスト エディター) は、Microsoft Visual Studio 2010 Feature Pack 2 に含まれています。 この Feature Pack をダウンロードするには、Visual Studio 2010 Ultimate、Visual Studio 2010 Premium、または Test Professional 2010 と、MSDN サブスクリプション、Microsoft BizSpark、または MSDN アカデミック アライアンスが必要です。 詳細については「コード化された UI テスト エディターを使用したコード化された UI テストの編集」および「Microsoft Visual Studio 2010 Feature Pack 2」を参照してください。

参照

処理手順

方法: コード化された UI テストを作成する

概念

自動 UI テストを使用したユーザー インターフェイスのテスト

コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム

その他の技術情報

チュートリアル: コード化された UI テストの作成、編集、および保守

コード化された UI テストの構造