コード化された UI テストを使用した Windows ストア アプリのテスト
コード化された UI テストを使用して、Windows ストア アプリを検証します。
簡単な Windows ストア アプリを作成する
XAML ベースの Windows ストア アプリ用のコード化された UI テストを実行する場合は、各コントロールを識別する一意のオートメーション プロパティを設定する必要があります。
[ツール] メニューの [オプション] をポイントし、[テキスト エディター]、[XAML]、[その他] の順に選択します。
チェック ボックスをオンにして、対話要素の作成時に自動的に名前を付けます。
Visual C# または Visual Basic テンプレートを使用して、空の XAML ベースの Windows ストア アプリ用の新しいプロジェクトを作成します。
ソリューション エクスプローラーで、MainPage.xaml を開きます。ツールボックスから、ボタン コントロールとテキスト ボックス コントロールをデザイン サーフェイスにドラッグします。
ボタン コントロールをダブルクリックし、次のコードを追加します。
private void button_Click_1(object sender, RoutedEventArgs e) { this.textBox.Text = this.button.Name; }
Public NotInheritable Class MainPage Inherits Page Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles Button.Click Me.textBox.Text = Me.button.Name End Sub End Class
F5 キーを押して、Windows ストア アプリを実行します。
Windows ストア アプリのコード化された UI テストの作成と実行
Windows ストア アプリの新しいコード化された UI テスト プロジェクトを作成します。
十字線ツールを使用して UI マップを編集することを選択します。
コード化された UI テスト ビルダーで十字線ツールを使用してアプリ タイルを選択し、[AutomationId] を右クリックして、[値をクリップボードにコピー] を選択します。クリップボード内の値は、テスト用のアプリを起動する操作を記述するために後で使用されます。
実行中の Windows ストア アプリで、十字線ツールを使用してボタン コントロールとテキスト ボックス コントロールを選択します。各コントロールを追加した後、コード化された UI テスト ビルダーのツール バーの [コントロールの UI コントロール マップへの追加] を選択します。
コード化された UI テスト ビルダーのツール バーの [コードの生成] ボタンを選択し、[生成] を選択して、UI コントロール マップへの変更のコードを作成します。
テキスト ボックスの値を設定するボタンを選択します。
十字線ツールを使用してテキスト ボックス コントロールを選択し、[Text] プロパティを選択します。
アサーションを追加します。これは、値が正しいことを確認するためにテストで使用されます。
アサーションのコードを追加および生成します。
Visual C#
ソリューション エクスプローラーで、UIMap.Designer.cs ファイルを開いて、Assert メソッドとコントロール用に追加されたコードを表示します。
Visual Basic
ソリューション エクスプローラーで、CodedUITest1.vb ファイルを開き、CodedUITestMethod1() テスト メソッドのコードでアサーション メソッド (自動的に追加された Me.UIMap.AssertMethod1()) への呼び出しを右クリックし、[定義へ移動] を選択します。これにより、コード エディターで UIMap.Designer.vb ファイルが開かれ、Assert メソッドとコントロール用に追加されたコードが表示されます。
注意 UIMap.designer.cs または UIMap.Designer.vb ファイルを直接変更しないでください。そうすると、ファイルへの変更はテストが生成されるたびにオーバーライドされます。
Assert メソッド
public void AssertMethod1() { #region Variable Declarations XamlEdit uITextBoxEdit = this.UIApp1Window.UITextBoxEdit; #endregion // Verify that the 'Text' property of 'textBox' text box equals 'button' Assert.AreEqual(this.AssertMethod3ExpectedValues.UITextBoxEditText, uITextBoxEdit.Text); }
Public Sub AssertMethod1() Dim uITextBoxEdit As XamlEdit = Me.UIApp2Window.UITextBoxEdit 'Verify that the 'Text' property of 'textBox' text box equals 'button' Assert.AreEqual(Me.AssertMethod1ExpectedValues.UITextBoxEditText, uITextBoxEdit.Text) End Sub
コントロール
#region Properties public XamlButton UIButtonButton { get { if ((this.mUIButtonButton == null)) { this.mUIButtonButton = new XamlButton(this); #region Search Criteria this.mUIButtonButton.SearchProperties[XamlButton.PropertyNames.AutomationId] = "button"; this.mUIButtonButton.WindowTitles.Add("App1"); #endregion } return this.mUIButtonButton; } } public XamlEdit UITextBoxEdit { get { if ((this.mUITextBoxEdit == null)) { this.mUITextBoxEdit = new XamlEdit(this); #region Search Criteria this.mUITextBoxEdit.SearchProperties[XamlEdit.PropertyNames.AutomationId] = "textBox"; this.mUITextBoxEdit.WindowTitles.Add("App1"); #endregion } return this.mUITextBoxEdit; } } #endregion #region Fields private XamlButton mUIButtonButton; private XamlEdit mUITextBoxEdit; #endregion
#Region "Properties" Public ReadOnly Property UIButtonButton() As XamlButton Get If (Me.mUIButtonButton Is Nothing) Then Me.mUIButtonButton = New XamlButton(Me) Me.mUIButtonButton.SearchProperties(XamlButton.PropertyNames.AutomationId) = "button" Me.mUIButtonButton.WindowTitles.Add("App2") End If Return Me.mUIButtonButton End Get End Property Public ReadOnly Property UITextBoxEdit() As XamlEdit Get If (Me.mUITextBoxEdit Is Nothing) Then Me.mUITextBoxEdit = New XamlEdit(Me) Me.mUITextBoxEdit.SearchProperties(XamlEdit.PropertyNames.AutomationId) = "textBox" Me.mUITextBoxEdit.WindowTitles.Add("App2") End If Return Me.mUITextBoxEdit End Get End Property #End Region #Region "Fields" Private mUIButtonButton As XamlButton Private mUITextBoxEdit As XamlEdit #End Region
ソリューション エクスプローラーで、CodedUITest1.cs ファイルまたは CodedUITest1.vb ファイルを開きます。これで、UIMap に追加されるコントロールを使用してテストを実行する必要がある操作の CodedUTTestMethod1 メソッドにコードを追加できます。
前にクリップボードにコピーしたオートメーション ID プロパティを使用して、Windows ストア アプリを起動します。
XamlWindow.Launch("8ebca7c4-effe-4c86-9998-068daccee452_cyrqexqw8cc7c!App")
XamlWindow myAppWindow = XamlWindow.Launch("7254db3e-20a7-424e-8e05-7c4dabf4f28d_cyrqexqw8cc7c!App");
ボタン コントロールをタップするジェスチャを追加します。
Gesture.Tap(this.UIMap.UIApp1Window. UIButtonButton);
Gesture.Tap(Me.UIMap.UIApp2Window. UIButtonButton)
自動的に生成された Assert メソッドへの呼び出しが、アプリの起動とボタンのタップ ジェスチャの後にあることを確認します。
this.UIMap.AssertMethod1();
Me.UIMap.AssertMethod1()
コードを追加すると、CodedUITestMethod1 テスト メソッドは次のようになります。
[TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. // Launch the app. XamlWindow myAppWindow = XamlWindow.Launch("7254db3e-20a7-424e-8e05-7c4dabf4f28d_cyrqexqw8cc7c!App"); // Tap the button. Gesture.Tap(this.UIMap.UIApp1Window.UIButtonButton); this.UIMap.AssertMethod1(); }
<CodedUITest(CodedUITestType.WindowsStore)> Public Class CodedUITest1 <TestMethod()> Public Sub CodedUITestMethod1() ' ' To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. ' ' Launch the app. XamlWindow.Launch("8ebca7c4-effe-4c86-9998-068daccee452_cyrqexqw8cc7c!App") '// Tap the button. Gesture.Tap(Me.UIMap.UIApp2Window.UIButtonButton) Me.UIMap.AssertMethod1() End Sub
テストをビルドし、テスト エクスプローラーを使用してテストを実行します。
Windows ストア アプリが起動し、ボタンをタップする操作が完了し、Assert メソッドを使用してテキスト ボックスの Text プロパティが設定され、検証されます。
テストの完了後、テストが成功したことがテスト エクスプローラーに表示されます。
Q & A
Q: [コード化された UI テスト] ダイアログの [コードの生成] に、コード化された UI テストを記録するオプションが表示されないのはなぜですか?
A: 記録するオプションは、Windows ストア アプリではサポートされません。
Q: WinJS ベースの Windows ストア アプリのコード化された UI テストを作成できますか?
A: いいえ、XAML ベースのアプリだけがサポートされます。
Q: Windows 8 が実行されていないシステムで、Windows ストア アプリのコード化された UI テストを作成できますか?
A: いいえ、できません。コード化された UI テスト プロジェクト (Windows ストア アプリ) のテンプレートは Windows 8 でのみ使用できます。
Q: UIMap.Designer ファイルでコードを変更できないのはなぜですか?
A: UIMapDesigner.cs ファイルでコードを変更しても、[UIMap - コード化された UI テスト ビルダー] を使用してコードを生成するたびに変更が上書きされます。記録されたメソッドを変更する必要がある場合は、メソッドを UIMap.cs ファイルにコピーし、メソッド名を変更する必要があります。UIMap.cs ファイルを使用すると、UIMapDesigner.cs ファイルのメソッドやプロパティをオーバーライドできます。Coded UITest.cs ファイルの元のメソッドへの参照を削除し、変更したメソッド名に置き換える必要があります。