UI オートメーションを使用してコードをテストするUse UI Automation To Test Your Code

ユーザー インターフェイス (UI) を介してアプリケーションを実行する自動テストは、コード化された UI テスト (CUIT) と呼ばれます。Automated tests that drive your application through its user interface (UI) are known as coded UI tests (CUITs). これらのテストには、UI コントロールの機能テストが含まれます。These tests include functional testing of the UI controls. これらのテストで、アプリケーション全体が、ユーザー インターフェイスを含めて正しく機能していることを検証できます。They let you verify that the whole application, including its user interface, is functioning correctly. コード化された UI テストは、Web ページなど、ユーザー インターフェイスに検証やその他のロジックがある場合に特に有用です。Coded UI Tests are particularly useful where there is validation or other logic in the user interface, for example in a web page. また、既存の手動テストを自動化するために頻繁に使用されます。They are also frequently used to automate an existing manual test.

次の図に示すように、一般的な開発環境では、最初はアプリケーションをビルドし (F5 キー)、いくつかの UI コントロールをクリックして正しく動作していることを確認するだけです。As shown in the following illustration, a typical development experience might be one where, initially, you simply build your application (F5) and click through the UI controls to verify that things are working correctly. 次に、アプリケーションを手動でテストし続けなくてもよいように、コード化されたテストを作成しようとするでしょう。You then might decide to create a coded test so that you don't need to continue to test the application manually. アプリケーションでテストする特定の機能に応じて、機能テストまたは統合テストのコードを記述できます。テストには、UI レベルでのテストが含まれている場合も含まれていない場合もあります。Depending on the particular functionality being tested in your application, you can write code for either a functional test, or for an integration test that might or might not include testing at the UI level. 一部のビジネス ロジックに直接アクセスするだけの場合は、単体テストのコードを記述することができます。If you simply want to directly access some business logic, you might code a unit test. ただし、特定の状況下では、アプリケーションのさまざまな UI コントロールのテストを含める方が有益な場合があります。However, under certain circumstances, it can be beneficial to include testing of the various UI controls in your application. コード化された UI テストでは、最初の (F5 キー) シナリオを自動化でき、コード チャーンがアプリケーションの機能に影響を与えないことを検証できます。A coded UI test can automate the initial (F5) scenario, verifying that code churn does not impact the functionality of your application.

アプリケーション開発中のテストTesting during application development

コード化された UI テストの作成は簡単です。Creating a coded UI test is easy. CUIT テスト ビルダーをバックグラウンドで実行中に、テストを手動で実行します。You simply perform the test manually while the CUIT Test Builder runs in the background. 特定のフィールドに表示する値を指定することもできます。You can also specify what values should appear in specific fields. CUIT テスト ビルダーは操作を記録し、それらの記録からコードを生成します。The CUIT Test Builder records your actions and generates code from them. テストの作成後、特殊なエディターでテストを編集して、操作のシーケンスを変更することができます。After the test is created, you can edit it in a specialized editor that lets you modify the sequence of actions.

または、Microsoft Test Manager に記録されたテスト ケースがある場合は、それからコードを生成できます。Alternatively, if you have a test case that was recorded in Microsoft Test Manager, you can generate code from that. 詳細については、「手動テストの記録と再生」をご覧ください。For more information, see Record and play back manual tests.

コーディングよりテストに集中している場合でも、特殊な CUIT テスト ビルダーとエディターによって、コード化された UI テストの作成および編集が容易になります。The specialized CUIT Test Builder and editor make it easy to create and edit coded UI tests even if your main skills are concentrated in testing rather than coding. ただし、開発者が高度な方法でテストを拡張する場合は、コードはコピーして調整する作業がわかりやすくなるように構成されます。But if you are a developer and you want to extend the test in a more advanced way, the code is structured so that it is straightforward to copy and adapt. たとえば、Web サイトで商品を購入するテストを記録した後、生成されたコードを編集して多数の商品を購入するループを追加する場合があります。For example, you might record a test to buy something at a website, and then edit the generated code to add a loop that buys many items.

RequirementsRequirements

コード化された UI テストを作成するCreating Coded UI Tests

  1. コード化された UI テストを作成します。Create a Coded UI Test project.

    コード化された UI テストは、コード化された UI テスト プロジェクトに含まれている必要があります。Coded UI tests must be contained in a coded UI test project. コード化された UI テスト プロジェクトをまだ作成していない場合は、プロジェクトを作成します。If you don't already have a coded UI test project, create one. ソリューションのショートカット メニューの [ソリューション エクスプローラー] で、[追加][新しいプロジェクト] を選択し、[Visual Basic] または [Visual C#] を選択します。In Solution Explorer, on the shortcut menu of the solution, choose Add, New Project and then select either Visual Basic or Visual C#. 次に、[テスト][コード化された UI テスト] を選択します。Next, choose Test, Coded UI Test.

    • [コード化された UI テスト]* プロジェクト テンプレートが表示されません。I don't see the **Coded UI Test project templates.*

      コード化された UI テストをサポートしないバージョンの Visual Studio を使用している可能性があります。You might be using a version of Visual Studio that does not support coded UI tests. コード化された UI テストを作成するには、Visual Studio Enterprise を使用する必要があります。To create coded UI tests, you must use Visual Studio Enterprise.

  2. コード化された UI テスト ファイルを追加します。Add a coded UI test file.

    コード化された UI プロジェクトを作成した場合は、最初の CUIT ファイルが自動的に追加されます。If you just created a Coded UI project, the first CUIT file is added automatically. 別のテスト ファイルを追加するには、コード化された UI テスト プロジェクトのショートカット メニューを開き、[追加] をポイントし、[コード化された UI テスト] を選択します。To add another test file, open the shortcut menu on the coded UI test project, point to Add, and then choose Coded UI Test.

     コード化された UI テストを作成しますCreate a coded UI test

    [コード化された UI テストのコードの生成] ダイアログ ボックスで、[操作の記録、UI マップの編集、またはアサーションの追加] を選択します。In the Generate Code for Coded UI Test dialog box, choose Record actions, edit UI map or add assertions.

    操作の記録を選択しますSelect record actions

    コード化された UI テスト ビルダーが表示され、Visual Studio は最小化されます。The Coded UI Test Builder appears and Visual Studio is minimized.

    コード化された UI テスト ビルダーCoded UI Test Builder

  3. 操作のシーケンスを記録しますRecord a sequence of actions.

    記録を開始するには[記録する] アイコンをクリックします。To start recording, choose the Record icon. 必要に応じて、アプリケーションの起動など、アプリケーションでテストする操作を実行します。Perform the actions that you want to test in your application, including starting the application if that is required.

    たとえば、Web アプリケーションをテストする場合は、ブラウザーを起動し、Web サイトに移動し、アプリケーションにログインします。For example, if you are testing a web application, you might start a browser, navigate to the web site, and log in to the application.

    受信メールを処理する場合などに、記録を一時停止するには[一時停止] を選択します。To pause recording, for example if you have to deal with incoming mail, choose Pause.

    警告

    デスクトップ上で実行されるすべてのアクションが記録されます。All actions performed on the desktop will be recorded. 機密データが記録される可能性のあるアクションを実行する場合には、記録を一時停止します。Pause the recording if you are performing actions that may lead to sensitive data being included in the recording.

    間違って記録した操作を削除するには[Edit Actions](操作の編集) を選択します。To delete actions that you recorded by mistake, choose Edit Actions.

    操作をレプリケートするコードを生成するには[コードの生成] アイコンを選択し、コード化された UI テスト メソッドの名前と説明を入力します。To generate code that will replicate your actions, choose the Generate Code icon and type a name and description for your coded UI test method.

  4. テキスト ボックスなどの UI フィールドの値を検証しますVerify the values in UI fields such as text boxes.

    コード化された UI テスト ビルダーで [アサーションの追加] を選択し、実行中のアプリケーションで UI コントロールを選択します。Choose Add Assertions in the Coded UI Test Builder, and then choose a UI control in your running application. 表示されるプロパティの一覧で、テキスト ボックスの Text などのプロパティを選択します。In the list of properties that appears, select a property, for example, Text in a text box. ショートカット メニューで、[アサーションの追加] をクリックします。On the shortcut menu, choose Add Assertion. ダイアログ ボックスで、比較演算子、比較対象値、およびエラー メッセージを選択します。In the dialog box, select the comparison operator, the comparison value, and the error message.

    アサーション ウィンドウを閉じ、[コードの生成] を選択します。Close the assertion window and choose Generate Code.

    要素を対象としたコード化された UI テストCoded UI test targeting element

    ヒント

    操作の記録と値の検証の間で交互に切り替えます。Alternate between recording actions and verifying values. 操作または検証の各シーケンスの最後にコードを生成します。Generate code at the end of each sequence of actions or verifications. 必要に応じて、後で新しい操作と検証を挿入できます。If you want, you will be able to insert new actions and verifications later.

    詳細については、「UI コントロールのプロパティを検証する」をご覧ください。For more details, see Validating Properties of Controls.

  5. 生成されたテスト コードを表示しますView the generated test code.

    生成されたコードを表示するには、UI テスト ビルダー ウィンドウを閉じます。To view the generated code, close the UI Test Builder window. コードで、各ステップに付けた名前を確認できます。In the code, you can see the names that you gave to each step. コードは作成した CUIT ファイルにあります。The code is in the CUIT file that you created:

    [CodedUITest]  
    public class CodedUITest1  
    { ...  
      [TestMethod]  
      public void CodedUITestMethod1()  
      {  
          this.UIMap.AddTwoNumbers();  
          this.UIMap.VerifyResultValue();  
          // To generate more code for this test, select   
          // "Generate Code" from the shortcut menu.  
      }  
    }  
    
  6. さらに操作とアサーションを追加しますAdd more actions and assertions.

    次に、テスト メソッド内の適切な位置にカーソルを置き、ショートカット メニューで、[コード化された UI テストのコードの生成] を選択します。Place the cursor at the appropriate point in the test method and then, on the shortcut menu, choose Generate Code for Coded UI Test. 新しいコードがカーソルの位置に挿入されます。New code will be inserted at that point.

  7. テストの操作とアサーションの詳細を編集しますEdit the detail of the test actions and the assertions.

    UIMap.uitest を開きます。Open UIMap.uitest. このファイルはコード化された UI テスト エディターで開かれます。ここで、記録した操作のシーケンスやアサーションを編集できます。This file opens in the Coded UI Test Editor, where you can edit any sequence of actions that you recorded as well as edit your assertions.

    コード化された UI テスト エディターCoded UI Test Editor

    詳細については、「コード化された UI テスト エディターを使用したコード化された UI テストの編集」をご覧ください。For more information, see Editing Coded UI Tests Using the Coded UI Test Editor.

  8. テストを実行しますRun the test.

    テスト エクスプローラーを使用するか、テスト メソッドでショートカット メニューを開き、[テストの実行] を選択します。Use Test Explorer, or open the shortcut menu in the test method, and then choose Run Tests. テストの実行方法の詳細については、「テスト エクスプローラーを使用した単体テストの実行」と、このトピックの最後の「次の内容」セクションの「コード化された UI テストの実行の追加オプション」をご覧ください。For more information about how to run tests, see Run unit tests with Test Explorer and Additional options for running coded UI tests in the What's next? section at the end of this topic.

    このトピックの残りのセクションでは、このプロシージャ内の各ステップについてさらに詳しく説明します。The remaining sections in this topic provide more detail about the steps in this procedure.

    さらに詳細な使用例については、「チュートリアル: コード化された UI テストの作成、編集、および保守」をご覧ください。For a more detailed example, see Walkthrough: Creating, Editing and Maintaining a Coded UI Test. このチュートリアルでは、簡単な Windows Presentation Foundation (WPF) アプリケーションを作成して、コード化された UI テストの作成、編集、および保守を行う方法について説明します。In the walkthrough, you will create a simple Windows Presentation Foundation (WPF) application to demonstrate how to create, edit, and maintain a coded UI test. また、さまざまなタイミングの問題やコントロールのリファクタリングによって機能が損なわれたテストを修正するための解決策を示します。The walkthrough provides solutions for correcting tests that have been broken by various timing issues and control refactoring.

テスト対象のアプリケーションを開始および停止するStarting and stopping the application under test

テストごとに、アプリケーション、ブラウザー、またはデータベースを個別に起動および停止したくありません。どうすれば回避できますか?I don't want to start and stop my application, browser, or database separately for each test. How do I avoid that?

  • Prerequsite テスト対象のアプリケーションの起動操作を記録しない場合は、[記録する] アイコンを選択する前にアプリケーションを起動する必要があります。Prerequsite If you do not want to record the actions to start your application under test, you must start your application before you choose the Record icon.

  • Prerequsite テストの終了時に、テストを実行するプロセスが終了します。PrerequsiteAt the end of a test, the process in which the test runs is terminated. テストでアプリケーションを起動した場合、アプリケーションは通常は閉じます。If you started your application in the test, the application usually closes. 終了時にテストがアプリケーションを閉じないようにするには、ソリューションに .runsettings ファイルを追加し、KeepExecutorAliveAfterLegacyRun オプションを使用する必要があります。If you do not want the test to close your application when it exits, you must add a .runsettings file to your solution and use the KeepExecutorAliveAfterLegacyRun option. 詳細については、「.runsettings ファイルを使用して単体テストを構成する」をご覧ください。For more information, see Configure unit tests by using a .runsettings file.

  • Prerequsite [TestInitialize] 属性で識別されるテスト初期化メソッドを追加できます。このメソッドは、各テスト メソッドの開始時にコードを実行します。Prerequsite You can add a test initialize method, identified by a [TestInitialize] attribute, which runs code at the start of each test method. たとえば、TestInitialize メソッドからアプリケーションを起動することができます。For example, you could start the application from the TestInitialize method.

  • Prerequsite [TestCleanup] 属性で識別されるテスト クリーンアップ メソッドを追加できます。このメソッドは、各テスト メソッドの終了時にコードを実行します。Prerequsite You can add a test cleanup method, identified by a [TestCleanup] attribute, that runs code at the end of each test method. たとえば、アプリケーションを終了するメソッドは、TestCleanup メソッドから呼び出すことができます。For example, the method to close the application could be called from the TestCleanup method.

UI コントロールのプロパティを検証するValidating the properties of UI controls

コード化された UI テスト ビルダーを使用すると、テストの <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> にユーザー インターフェイス (UI) を追加したり、UI コントロールのアサーションを使用する検証メソッドのコードを生成したりできます。You can use the Coded UI Test Builder to add a user interface (UI) control to the <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> for your test, or to generate code for a validation method that uses an assertion for a UI control.

UI コントロールのアサーションを生成するには、コード化された UI テスト ビルダーのアサーションの追加ツールを選択し、正しいかどうかを検証するテスト対象アプリケーションのコントロールにドラッグします。To generate assertions for your UI controls, choose the Add Assertions tool in the Coded UI Test Builder and drag it to the control on the application under test that you want to verify is correct. ボックスがコントロールを囲んだら、マウス ボタンを離します。When the box outlines your control, release the mouse. コントロール クラス コードがすぐに UIMap.Designer.cs ファイルに作成されます。The control class code is immediately created in the UIMap.Designer.cs file.

要素を対象としたコード化された UI テストCoded UI test targeting element

これで、このコントロールのプロパティが [アサーションの追加] ダイアログ ボックスに表示されます。The properties for this control are now listed in the Add Assertions dialog box.

特定のコントロールに移動するには、矢印 (<<) を選択して [UI コントロール マップ] のビューを展開する方法もあります。Another way of navigating to a particular control is to choose the arrow (<<) to expand the view for the UI Control Map. 親、兄弟、子の各コントロールを見つけるには、マップのどこかをクリックし、方向キーを使用してツリー内を移動します。To find a parent, sibling, or child control, you can click anywhere on the map and use the arrow keys to move around the tree.

コード化された UI テストのプロパティCoded UI test properties

  • アプリケーションでコントロールを選択してもプロパティが表示されません。または UI コントロール マップにコントロールが表示されません。I don't see any properties when I select a control in my application, or I don't see the control in the UI Control Map.

    アプリケーション コードで、検証するコントロールは、HTML ID 属性や WPF UId などの一意の ID を持っている必要があります。In the application code, the control that you want to verify must have a unique ID, such as an HTML ID attribute, or a WPF UId. これらの ID を追加するために、アプリケーション コードの更新が必要になる場合があります。You might need to update the application code to add these IDs.

    次に、検証する UI コントロールのプロパティのショートカット メニューで、[アサーションの追加] をポイントします。Next, open the shortcut menu on the property for the UI control that you want to verify, and then point to Add Assertion. [アサーションの追加] ダイアログ ボックスで、アサーションの [比較子] (<xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual%2A> など) を選択し、[比較対象値] にアサーションの値を入力します。In the Add Assertion dialog box, select the Comparator for your assertion, for example <xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual%2A>, and type the value for your assertion in Comparison Value.

    コード化された UI テストのアサーションCoded UI test assertions

    テスト用のアサーションをすべて追加したら、[OK] を選択します。When you have added all your assertions for your test, choose OK.

    アサーションのコードを生成し、コントロールを UI マップに追加するために、[コードの生成] アイコンを選択します。To generate the code for your assertions and add the control to the UI map, choose the Generate Code icon. コード化された UI テスト メソッドの名前と説明を入力します。これらはメソッドのコメントとして追加されます。Type a name for your coded UI test method and a description for the method, which will be added as comments for the method. [追加と生成] を選択します。Choose Add and Generate. 次に、[閉じる] アイコンをクリックして、[コード化された UI テスト ビルダー] を閉じます。Next, choose the Close icon to close the Coded UI Test Builder. これで、次のようなコードが生成されます。This generates code similar to the following code. たとえば、入力した名前が AssertForAddTwoNumbers の場合、コードは次の例のようになります。For example, if the name you entered is AssertForAddTwoNumbers, the code will look like this example:

  • コード化された UI テスト ファイルのテスト メソッドに、AssertForAddTwoNumbers という Assert メソッドの呼び出しを追加します。Adds a call to the assert method AssertForAddTwoNumbers to the test method in your coded UI test file:

    [TestMethod]  
    public void CodedUITestMethod1()  
    {  
        this.UIMap.AddTwoNumbers();  
        this.UIMap.AssertForAddTwoNumbers();  
    }  
    

    このファイルを編集して、ステップとアサーションの順序を変更するか、新しいテスト メソッドを作成することができます。You can edit this file to change the order of the steps and assertions, or to create new test methods. さらにコードを追加するには、テスト メソッドにカーソルを置き、ショートカット メニューの [コード化された UI テストのコードの生成] を選択します。To add more code, place the cursor on the test method and on the shortcut menu choose Generate Code for Coded UI Test.

  • UI マップ (UIMap.uitest) に AssertForAddTwoNumbers という名前のメソッドを追加します。Adds a method called AssertForAddTwoNumbers to your UI map (UIMap.uitest). このファイルはコード化された UI テスト エディターで開かれ、そこでアサーションを編集できます。This file opens in the Coded UI Test Editor, where you can edit the assertions.

    コード化された UI テスト エディターを使用したアサートの編集Edit assert using Coded UI Test Editor

    詳細については、「コード化された UI テスト エディターを使用したコード化された UI テストの編集」をご覧ください。For more information, see Editing Coded UI Tests Using the Coded UI Test Editor.

    UIMap.Designer.cs で、アサーション メソッドの生成されたコードを表示することもできます。You can also view the generated code of the assertion method in UIMap.Designer.cs. ただし、このファイルは編集しないでください。However, you should not edit this file. 適合させたバージョンのコードを作成する場合は、メソッドを UIMap.cs などの別のファイルにコピーし、メソッドの名前を変更し、メソッドを編集します。If you want to make an adapted version of the code, copy the methods to another file such as UIMap.cs, rename the methods, and edit them there.

    public void AssertForAddTwoNumbers()  
    {  
        ...  
    }  
    

    コード化された UI テスト ビルダーから [アサーションの追加] を選択しようとすると、選択したいコントロールがフォーカスを失い、非表示になります。どうやって、コントロールを選択すればよいですか?The control I want to select loses focus and disappears when I try to select the Add Assertions tool from the Coded UI Test Builder. How do I select the control?
    キーボードを使用して非表示のコントロールを選択するSelecting a hidden control using the keyboard

    コントロールを追加し、プロパティを検証するとき、キーボードが必要になる場合もあります。Sometimes, when adding controls and validating their properties, you might have to use the keyboard. たとえば、コンテキスト メニュー コントロールを使用するコード化された UI テストを記録するとき、コード化された UI テスト ビルダーの [アサーションの追加] ツールで選択しようとすると、コントロールのメニュー項目の一覧がフォーカスを失い、非表示になります。For example, when you try to record a coded UI test that uses a context menu control, the list of menu items in the control will lose focus and disappear when you try to select the Add Assertions tool from the Coded UI Test Builder. これを次の図に示します。Internet Explorer で、[アサーションの追加] ツールでコンテキスト メニューを選択しようとすると、メニューはフォーカスを失い、非表示になります。This is demonstrated in the following illustration, where the context menu in Internet Explorer will lose focus and disappear if you try to select it with the Add Assertions tool.

    CodedUITest_SelectControlKeyboardCodedUITest_SelectControlKeyboard

    キーボードを使用して UI コントロールを選択するには、マウスをコントロールの上に置きます。To use the keyboard to select a UI control, hover over the control with the mouse. 次に、Ctrl キーと I キーを同時に押します。Then hold down the Ctrl key and the I key at the same time. キーを離します。Release the keys. コントロールは、コード化された UT のテスト ビルダーによって記録されます。The control is recorded by the Coded UT Test Builder.

警告

Microsoft Lync を使用している場合は、コード化された UI テスト ビルダーを起動する前に Lync を閉じる必要があります。If you use Microsoft Lync, you must close Lync before you start the Coded UI Test Builder. Microsoft Lync は、Ctrl + I のキーボード ショートカットに干渉します。Microsoft Lync interferes with the Ctrl+I keyboard shortcut.

コントロール上のマウス ホバーを記録できません。これを回避する方法はありますか?I can't record a mouse hover on a control. Is there a way around this?
マウス ホバーを手動で記録するManually recording mouse hovers

状況によっては、コード化された UI テストで使用される特定のコントロールで、キーボードを使用してマウス ホバー イベントを手動で記録することが必要な場合があります。Under some circumstances, a particular control that's being used in a coded UI test might require you to use the keyboard to manually record mouse hover events. たとえば、Windows フォームまたは Windows Presentation Foundation (WPF) アプリケーションをテストするとき、カスタム コードがある場合があります。For example, when you test a Windows Form or a Windows Presentation Foundation (WPF) application, there might be custom code. または、マウスが置かれたときにツリー ノードを展開するなど、コントロールの上にマウスが置かれたときに特別な動作が定義されている場合もあります。Or, there might be special behavior defined for hovering over a control, such as a tree node expanding when a user hovers over it. このような状況をテストするには、定義済みのキーボードのキーを押して、コントロールの上にマウスを置いていることをコード化された UI テスト ビルダーに手動で通知する必要があります。To test circumstances like these, you have to manually notify the Coded UI Test Builder that you are hovering over the control by pressing predefined keyboard keys.

コード化された UI テストを実行するとき、コントロール上にマウスを置きます。When you perform your coded UI test, hover over the control. そして、キーボードの Ctrl キーを押しながら、Shift キーと R キーを押したままにします。Then press and hold Ctrl, while you press and hold the Shift and R keys on your keyboard. キーを離します。Release the keys. コード化された UT のテスト ビルダーによって、マウス ホバー イベントが記録されます。A mouse hover event is recorded by the Coded UT Test Builder.

CodedUI_HoverCodedUI_Hover

テスト メソッドを生成すると、次の例のようなコードが UIMap.Desinger.cs ファイルに追加されます。After you generate the test method, code similar to the following example will be added to the UIMap.Desinger.cs file:

// Mouse hover '1' label at (87, 9)  
Mouse.Hover(uIItem1Text, new Point(87, 9));  

マウス ホバー イベントをキャプチャするキーの割り当ては、自分の環境内の他の場所で使用されています。既定のキーの割り当てを変更できますか?The key assignment for capturing mouse hover events is being used elsewhere in my environment. Can I change the default key assignment?
マウス ホバーのキーボード割り当てを構成するConfiguring mouse hover keyboard assignments

必要に応じて、コード化された UI テストでマウス ホバー イベントを適用するために使用される既定のキーボード割り当て Ctrl + Shift + R は、異なるキーを使用するように構成できます。If necessary, the default keyboard assignment of Ctrl+Shift+R that is used to apply mouse hovering events in your coded UI tests can be configured to use different keys.

警告

通常は、マウス ホバー イベントのキーボードの割り当てを変更する必要はありません。You should not have to change the keyboard assignments for mouse hover events under ordinary circumstances. キーボードの割り当てを再設定するときは注意してください。Use caution when reassigning the keyboard assignment. 選択したキーボードの割り当ては、既に Visual Studio またはテスト中のアプリケーション内の他の場所で使用されている可能性もあります。Your choice might already be in use elsewhere within Visual Studio or the application being tested.

キーボードの割り当てを変更するには、次の構成ファイルを変更する必要があります:To change the keyboard assignments, you must modify the following configuration file:

<drive letter:>\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CodedUITestBuilder.exe.config

構成ファイルで、HoverKeyModifier および HoverKey キーの値を変更して、キーボードの割り当てを変更します。In the configuration file, change the values for the HoverKeyModifier and HoverKey keys to modify the keyboard assignments:

<!-- Begin : Background Recorder Settings -->  
<!-- HoverKey to use. -->  
<add key="HoverKeyModifier" value="Control, Shift"/>  
<add key="HoverKey" value="R"/>  

Web サイトでのマウス ホバーの記録に問題があります。この問題の解決策はありますか?I'm having issues with recording mouse hovers on a website. Is there a fix for this, too?
Web ブラウザーの暗黙のマウス ホバーを設定するSetting implicit mouse hovers for the web browser

多くの Web サイトでは、特定のコントロールの上にマウスを置くと、追加の詳細情報を表示するために展開されます。In many websites, when you hover over a particular control, it expands to show additional details. 通常、これらはデスクトップ アプリケーションのメニューのように見えます。Generally, these look like menus in desktop applications. これが一般的なパターンであるため、コード化された UI テストでは Web 参照に対する暗黙のホバーが有効になります。Because this is a common pattern, coded UI tests enable implicit hovers for Web browsing. たとえば、Internet Explorer でホバーを記録すると、イベントが発生します。For example, if you record hovers in Internet Explorer, an event is fired. これらのイベントによって、ホバーが重複して記録されることがあります。These events can lead to redundant hovers getting recorded. このため、暗黙のホバーは UI テスト構成ファイルで ContinueOnErrortrue に設定された状態で記録されます。Because of this, implicit hovers are recorded with ContinueOnError set to true in the UI test configuration file. これによって、ホバー イベントが失敗した場合でも再生は続行されます。This allows playback to continue if a hover event fails.

Web ブラウザーで暗黙のホバーの記録を有効にするには、構成ファイルを開きます。To enable the recording of implicit hovers in a Web browser, open the configuration file:

<drive letter:>\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CodedUITestBuilder.exe.config

次の例に示すように、構成ファイルでキー RecordImplicitiHoverstrue の値に設定されていることを確認します。Verify that the configuration file has the key RecordImplicitiHovers set to a to a value of true as shown in the following sample:

<!--Use this to enable/disable recording of implicit hovers.-->  
<add key="RecordImplicitHover" value="true"/>  

コード化された UI テストをカスタマイズするCustomizing your coded UI test

コード化された UI テストの作成後、Visual Studio で次のいずれかのツールを使用してテストを編集できます。After you've created your coded UI test, you can edit it by using any of the following tools in Visual Studio:

生成されたコードThe Generated Code

[コードの生成] を選択すると、いくつかのコードが作成されます。When you choose Generate Code, several pieces of code are created:

  • テスト メソッド内の行。A line in the test method.

    [CodedUITest]  
    public class CodedUITest1  
    { ...  
      [TestMethod]  
      public void CodedUITestMethod1()  
      {  
          this.UIMap.AddTwoNumbers();  
          // To generate more code for this test, select   
          // "Generate Code" from the shortcut menu.      }  
    }  
    

    このメソッド内で右クリックして、記録された操作および検証をさらに追加します。You can right-click in this method to add more recorded actions and verifications. メソッドを手動で編集して、コードを拡張または変更することもできます。You can also edit it manually to extend or modify the code. たとえば、コードの一部をループで囲むことができます。For example, you could enclose some of the code in a loop.

    また、新しいテスト メソッドを追加し、同様にそれらにコードを追加できます。You can also add new test methods and add code to them in the same way. 各テスト メソッドは、[TestMethod] 属性を持っている必要があります。Each test method must have the [TestMethod] attribute.

  • UIMap.uitest 内のメソッドA method in UIMap.uitest

    このメソッドには、記録した操作または検証した値の詳細が含まれます。This method includes the detail of the actions you recorded or the value that you verified. UIMap.uitest を開いて、このコードを編集できます。You can edit this code by opening UIMap.uitest. これは特殊なエディターで開かれ、記録された操作を削除またはリファクタリングできます。It opens in a specialized editor in which you can delete or refactor the recorded actions.

    また、UIMap.Designer.cs で生成されたメソッドを表示できます。Youcan also view the generated method in UIMap.Designer.cs. このメソッドによって、テストの実行時に記録した操作が実行されます。This method performs the actions that you recorded when you run the test.

    // File: UIMap.Designer.cs  
    public partial class UIMap  
    {  
      /// <summary>  
      /// Add two numbers  
      /// </summary>  
      public void AddTwoNumbers()  
      { ...   }  
    }  
    

    警告

    このファイルはさらにテストを作成すると再生成されるため、ファイルを編集しないでください。You should not edit this file, because it will be regenerated when you create more tests.

    これらのメソッドを UIMap.cs にコピーして、メソッドの適合させたバージョンを作成できます。You can make adapted versions of these methods by copying them to UIMap.cs. たとえば、テスト メソッドから呼び出すことができるパラメーター化されたバージョンを作成できます。For example, you could make a parameterized version that you could call from a test method:

    // File: UIMap.cs  
    public partial class UIMap // Same partial class  
    {  
      /// <summary>  
      /// Add two numbers - parameterized version  
      /// </summary>  
      public void AddTwoNumbers(int firstNumber, int secondNumber)  
      { ...   // Code modified to use parameters.  
      }  
    }  
    
  • UIMap.uitest 内の宣言Declarations in UIMap.uitest

    これらの宣言は、テストで使用されるアプリケーションの UI コントロールを表します。These declarations represent the UI controls of the application that are used by your test. これらは、コントロールを操作し、プロパティにアクセスするために、生成されたコードによって使用されます。They are used by the generated code to operate the controls and access their properties.

    独自のコードを記述する場合も、これらを使用できます。You can also use them if you write your own code. たとえば、テスト メソッドで Web アプリケーションのハイパーリンクの選択やテキスト ボックスへの値の入力を実行したり、フィールドの値に基づいて分岐して別のテスト操作を行ったりすることができます。For example, you can have your test method choose a hyperlink in a Web application, type a value in a text box, or branch off and take different testing actions based on a value in a field.

    大規模なアプリケーションのテストを容易にするために、複数のコード化された UI テストと複数の UI マップ オブジェクトおよびファイルを追加できます。You can add multiple coded UI tests and multiple UI map objects and files to facilitate testing a large application. 詳細については、「複数の UI マップでの大規模アプリケーションのテスト」をご覧ください。For more information, see Testing a Large Application with Multiple UI Maps.

    生成されるコードの詳細については、「コード化された UI テストの構造」をご覧ください。For more information about the generated code, see Anatomy of a Coded UI Test.

UI コントロールの操作とプロパティのコーディングCoding UI control actions and properties

コード化された UI テストで UI テストのコントロールを使用する場合、コントロールは操作とプロパティの 2 つに分類されます。When you work with UI test controls in coded UI tests they are separated into two parts: actions and properties.

  • 最初の部分は、UI テストのコントロールで実行できる操作で構成されます。The first part consists of actions that you can perform on UI test controls. たとえば、コード化された UI テストでは、UI テストのコントロールでのマウス クリックをシミュレートしたり、UI テストのコントロールに影響を与えるキーボードでのキー入力をシミュレートしたりすることができます。For example, coded UI tests can simulate mouse clicks on a UI test control, or simulate keys typed on the keyboard to affect a UI test control.

  • 2 番目の部分では、UI テストのコントロールのプロパティの取得や設定を行うことができます。The second part consists of enabling you to get and set properties on a UI test control. たとえば、コード化された UI テストでは、ListBox 内の項目数を取得したり、CheckBox をオンの状態に設定したりできます。For example, coded UI tests can get the count of items in a ListBox, or set a CheckBox to the selected state.

    UI テストのコントロールの操作へのアクセスAccessing Actions of UI Test Control

    UI テストのコントロールにマウス クリックやキー操作などの操作を実行するには、<xref:Microsoft.VisualStudio.TestTools.UITesting.Mouse> クラスおよび <xref:Microsoft.VisualStudio.TestTools.UITesting.Keyboard> クラスのメソッドを使用します。To perform actions on UI test controls, such as mouse clicks or keyboard actions, use the methods in the <xref:Microsoft.VisualStudio.TestTools.UITesting.Mouse> and <xref:Microsoft.VisualStudio.TestTools.UITesting.Keyboard> classes:

  • マウスのクリックなど、マウスを使用した操作を実行するには、<xref:Microsoft.VisualStudio.TestTools.UITesting.Mouse.Click%2A> を使用します。To perform a mouse-oriented action, such as a mouse click, on a UI test control, use <xref:Microsoft.VisualStudio.TestTools.UITesting.Mouse.Click%2A>.

    Mouse.Click(buttonCancel);

  • エディット コントロールへの入力など、キーボードを使用した操作を実行するには、<xref:Microsoft.VisualStudio.TestTools.UITesting.Keyboard.SendKeys%2A> を使用します。To perform a keyboard-oriented action, such as typing into an edit control, use <xref:Microsoft.VisualStudio.TestTools.UITesting.Keyboard.SendKeys%2A>.

    Keyboard.SendKeys(textBoxDestination, @"C:\Temp\Output.txt");

    UI テストのコントロールのプロパティへのアクセスAccessing Properties of UI Test Control

    UI コントロールの特定のプロパティ値を取得および設定するには、コントロールのプロパティ値を直接取得または設定するか、取得または設定する特定のプロパティの名前と共に <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A?displayProperty=fullName> メソッドおよび <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A?displayProperty=fullName> メソッドを使用します。To get and set UI control specific property values, you can directly get or set the values the properties of a control, or you can use the <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A?displayProperty=fullName> and <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A?displayProperty=fullName> methods with the name of the specific property that you want you get or set.

    <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> は、適切な Type にキャストできるオブジェクトを返します。<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> returns an object, which can then be cast to the appropriate Type. <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A> は、プロパティの値が格納されているオブジェクトを受け取ります。<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A> accepts an object for the value of the property.

UI テストのコントロールからプロパティを直接取得または設定するにはTo get or set properties from UI test controls directly
  • T:Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlList や T:Microsoft.VisualStudio.TestTools.UITesting.WinControls.WinComboBox など、T:Microsoft.VisualStudio.TestTools.UITesting.UITestControl から派生するコントロールの場合は、次のように、プロパティ値を直接取得または設定できます。With controls that derive from T:Microsoft.VisualStudio.TestTools.UITesting.UITestControl, such as T:Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlList or T:Microsoft.VisualStudio.TestTools.UITesting.WinControls.WinComboBox, you can get or set their property values directly, as follows:

    int i = myHtmlList.ItemCount;  
    myWinCheckBox.Checked = true;  
    
UI テストのコントロールからプロパティを取得するにはTo get properties from UI test controls
  • コントロールからプロパティ値を取得するには、<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> を使用します。To get a property value from a control, use <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A>.

  • 取得するコントロールのプロパティを指定するには、PropertyNames に対し、パラメーターとして各コントロールの <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> クラスからの適切な文字列を使用します。To specify the property of the control to get, use the appropriate string from the PropertyNames class in each control as the parameter to <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A>.

  • <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> は適切なデータ型を返しますが、この戻り値は Object としてキャストされます。<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetProperty%2A> returns the appropriate data type, but this return value is cast as an Object. 戻り値 Object は適切な型としてキャストされる必要があります。The return Object must then be cast as the appropriate type.

    例:Example:

    int i = (int)GetProperty(myHtmlList.PropertyNames.ItemCount);

UI テストのコントロールのプロパティを設定するにはTo set properties for UI test controls
  • コントロールのプロパティを設定するには、<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A> を使用します。To set a property in a control, use <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A>.

  • 設定するコントロールのプロパティを指定するには、PropertyNames に対し、最初のパラメーターとして <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A> クラスからの適切な文字列を使用します。2 番目のパラメーターにはプロパティ値を指定します。To specify the property of the control to set, use the appropriate string from the PropertyNames class as the first parameter to <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.SetProperty%2A>, with the property value as the second parameter.

    例:Example:

    SetProperty(myWinCheckBox.PropertyNames.Checked, true);

デバッグDebugging

コード化された UI テスト ログを使用して、コード化された UI テストを分析できます。You can analyze Coded UI tests using coded UI test logs. コード化された UI テスト ログは、コード化された UI テストの実行に関する重要な情報にフィルターを適用して記録します。Coded UI test logs filter and record important information about your coded UI test runs. ログは、問題をすばやくデバッグできるような形式で記録されます。The format of the logs lets you debug issues quickly. 詳細については、「コード化された UI テスト ログを使用したコード化された UI テストの分析」をご覧ください。For more information, see Analyzing Coded UI Tests Using Coded UI Test Logs.

次の内容What's next?

コード化された UI テストの実行の追加オプション: このトピックで既に説明したように、コード化された UI テストを Visual Studio から直接実行できます。Additional options for running coded UI tests: You can run coded UI tests directly from Visual Studio, as described earlier in this topic. また、Microsoft Test ManagerMicrosoft Test Manager または Team Foundation ビルドTeam Foundation Build から自動化された UI テストを実行できます。Additionally, you can run automated UI tests from Microsoft Test ManagerMicrosoft Test Manager, or from Team Foundation ビルドTeam Foundation Build. コード化された UI テストを自動化すると、テストは他の自動テストとは異なって実行時にデスクトップと対話する必要があります。When coded UI tests are automated, they have to interact with the desktop when you run them, unlike other automated tests.

外部リソースExternal Resources

ガイダンスGuidance

Visual Studio 2012 を使用した継続的配信のためのテスト - 第 2 章: 単体テスト: 内部のテストTesting for Continuous Delivery with Visual Studio 2012 - Chapter 2: Unit Testing: Testing the Inside

Visual Studio 2012 を使用した継続的配信のためのテスト - 第 5 章: システム テストの自動化Testing for Continuous Delivery with Visual Studio 2012 - Chapter 5: Automating System Tests

FAQFAQ

Coded UI Tests FAQ - 1 (コード化された UI テストの FAQ - 1)Coded UI Tests FAQ - 1

Coded UI Tests FAQ - 2 (コード化された UI テストの FAQ - 2)Coded UI Tests FAQ -2

フォーラムForum

Visual Studio の UI オートメーションのテスト (CodedUI を含む)Visual Studio UI Automation Testing (includes CodedUI)

関連項目See Also

<xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap><xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap>
<xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert><xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert>
コード品質の向上 Improve Code Quality
チュートリアル: コード化された UI テストの作成、編集、および保守 Walkthrough: Creating, Editing and Maintaining a Coded UI Test
コード化された UI テストの構造 Anatomy of a Coded UI Test
コード化された UI テストのベスト プラクティス Best Practices for Coded UI Tests
複数の UI マップでの大規模アプリケーションのテスト Testing a Large Application with Multiple UI Maps
コード化された UI テスト エディターを使用したコード化された UI テストの編集 Editing Coded UI Tests Using the Coded UI Test Editor
コード化された UI テストと操作の記録でサポートされている構成とプラットフォーム Supported Configurations and Platforms for Coded UI Tests and Action Recordings
Visual Studio 2010 からのコード化された UI テストのアップグレード Upgrading Coded UI Tests from Visual Studio 2010
既存の操作の記録からのコード化された UI テストの生成Generating a Coded UI Test from an Existing Action Recording