Testen von Windows Phone-Apps mit Tests der codierten UI

Testen von Windows Phone-Apps mit Tests der codierten UI.

Erstellen einer einfachen Windows Phone-App

  1. Erstellen Sie mit einer Visual C#- oder Visual Basic-Vorlage ein neues Projekt für eine leere Windows Phone-App.

    Neue Windows Phone App erstellen

  2. Öffnen Sie im Projektmappen-Explorer die Datei "MainPage.xaml".Ziehen Sie aus der Toolbox ein Schaltflächen- und ein Textfeldsteuerelement auf die Entwurfsoberfläche.

    Steuerung zu MainPage.xaml hinzufügen

  3. Benennen Sie im Fenster "Eigenschaften" das Schaltflächen-Steuerelement.

    Name des Schaltflächen-Steuerelements

  4. Benennen Sie das Textfeld-Steuerelement.

    Name des Textfeld-Steuerelements

  5. Doppelklicken Sie auf der Entwurfsoberfläche auf das Schaltflächensteuerelement und fügen Sie dann den folgenden Code hinzu:

    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
    
  6. Drücken Sie F5, sodass die Windows Phone-App im Emulator ausgeführt wird und überprüfen Sie, ob sie funktioniert.

    Windows Phone App ausführen

  7. Verlassen Sie den Emulator.

Windows Phone App bereitstellen

  • Ehe ein Coded UI-Test die Steuerelemente einer App zuordnen kann, müssen Sie die App bereitstellen.

    Windows Phone App bereitstellen

    Der Emulator startet.Die App ist jetzt für den Test bereit.

    App auf Emulator bereitgestellt

    Lassen Sie den Emulator laufen, während Sie den Coded UI-Test erstellen.

Erstellen eines Tests der codierten UI für die Windows Phone-App

  1. Fügen Sie ein neues Projekt mit einem Test für codierten UI der Lösung mit der Windows Phone-App hinzu.

    Neuen Test der programmierten UI für Windows Phone erstellen

  2. Wählen Sie mithilfe des Fadenkreuztools aus, dass Sie die UI-Zuordnung bearbeiten möchten.

    Coded UI-Test mithilfe des Fadenkreuztools generieren.

  3. Verwenden Sie das Fadenkreuztool zur Auswahl der App. Kopieren Sie dann den Wert der AutomationId-Eigenschaft der App, der später für das Starten der App im Test verwendet wird.

    AutomationId-Wert der App kopieren

  4. Starten Sie die App im Emulator mit dem Fadenkreuztool und wählen Sie das Schaltflächensteuerelement aus.Fügen Sie dann das Schaltflächen-Steuerelement der UI-Steuerelementzuordnung hinzu.

    Fadenkreuztool für Zuordnung der Steuerelemente verwenden

  5. Wiederholen Sie den vorangehenden Schritt zum Hinzufügen des Textfeld-Steuerelements zur UI-Steuerelementzuordnung.

    Fadenkreuztool für Zuordnung des Textfeld-Steuerelements verwenden

  6. Erstellen Sie den Code, sodass Code für Änderungen an der UI-Steuerelementzuordnung erstellt wird.

    Code vom Builder generieren

  7. Wählen Sie das Textfeldsteuerelement mit dem Fadenkreuztool aus, und wählen Sie dann die Text-Eigenschaft aus.

    Text-Eigenschaft auswählen

  8. Fügen Sie eine Assertion hinzu.Diese wird beim Test verwendet, um die Richtigkeit des Werts sicherzustellen.

    Assertion zum Test hinzufügen

  9. Generieren Sie Code für die Assert-Methode, und fügen Sie diesen hinzu.

    Code für die Assertion generieren

  10. Visual C#

    Öffnen Sie im Projektmappen-Explorer die Datei "UIMap.Designer.cs", um den eben hinzugefügten Code für die Assert-Methode und die Steuerelemente anzuzeigen.

    Visual Basic

    Öffnen Sie im Projektmappen-Explorer die Datei "CodedUITest1.vb".Klicken Sie im Testmethodencode "CodedUITestMethod1()" mit der rechten Maustaste den Aufruf für die Assertionsmethode, der automatisch hinzugefügt wurde Me.UIMap.AssertMethod1() und wählen Sie Gehe zu Definition.Hierdurch wird die Datei "UIMap.Designer.vb" im Code-Editor geöffnet, sodass Sie den hinzugefügten Code für die Assert-Methode und die Steuerelemente sehen können.

    WarnhinweisVorsicht

    Die Dateien "UIMap.designer.cs" oder "UIMap.Designer.vb" sollten nicht direkt geändert werden.Andernfalls werden die an der Datei vorgenommenen Änderungen bei jedem Generieren des Tests überschrieben.

    Assert-Methode

    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.AssertMethod1ExpectedValues.UITextBoxEditText, uITextBoxEdit.Text);
    }
    
    Public Sub AssertMethod1()
        Dim uITextBoxEdit As XamlEdit = Me.UIApp1Window.UITextBoxEdit
    
        'Verify that the 'Text' property of 'textBox' text box equals 'button'
        Assert.AreEqual(Me.AssertMethod1ExpectedValues.UITextBoxEditText, uITextBoxEdit.Text)
    End Sub
    

    Steuerelemente

    #region Properties
    public virtual AssertMethod1ExpectedValues AssertMethod1ExpectedValues
    {
        get
        {
            if ((this.mAssertMethod1ExpectedValues == null))
            {
                this.mAssertMethod1ExpectedValues = new AssertMethod1ExpectedValues();
            }
            return this.mAssertMethod1ExpectedValues;
        }
    }
    
    public UIApp1Window UIApp1Window
    {
        get
        {
            if ((this.mUIApp1Window == null))
            {
                this.mUIApp1Window = new UIApp1Window();
            }
            return this.mUIApp1Window;
        }
    }
    #endregion
    
    #region Fields
    private AssertMethod1ExpectedValues mAssertMethod1ExpectedValues;
    
    private UIApp1Window mUIApp1Window;
    #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"
            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"
            End If
            Return Me.mUITextBoxEdit
        End Get
    End Property
    #End Region
    
    #Region "Fields"
    Private mUIButtonButton As XamlButton
    
    Private mUITextBoxEdit As XamlEdit
    #End Region
    
  11. Öffnen Sie im Projektmappen-Explorer die Datei "CodedUITest1.cs" oder "CodedUITest1.vb".Nun können Sie der CodedUTTestMethod1-Methode Code für die zum Ausführen des Tests erforderlichen Aktionen hinzufügen.Verwenden Sie die der UIMap hinzugefügten Steuerelemente zum Hinzufügen von Code:

    1. Starten Sie die Windows Phone-App mithilfe der Automation ID-Eigenschaft, die Sie zuvor in Zwischenablage kopiert haben:

      XamlWindow myAppWindow = XamlWindow.Launch("ed85f6ff-2fd1-4ec5-9eef-696026c3fa7b_cyrqexqw8cc7c!App");
      
      XamlWindow.Launch("ed85f6ff-2fd1-4ec5-9eef-696026c3fa7b_cyrqexqw8cc7c!App");
      
    2. Fügen Sie eine Geste hinzu, um auf das Schaltflächensteuerelement zu tippen:

      Gesture.Tap(this.UIMap.UIApp1Window.UIButtonButton);
      
      Gesture.Tap(Me.UIMap.UIApp1Window.UIButtonButton)
      
    3. Überprüfen Sie, ob der Aufruf der automatisch generierten Assert-Methode nach dem Starten der Anwendung und dem Tippen auf die Schaltfläche erfolgt:

      this.UIMap.AssertMethod1();
      
      Me.UIMap.AssertMethod1()
      

    Nach dem Hinzufügen des Codes sollte die CodedUITestMethod1-Testmethode wie folgt aussehen:

    [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("ed85f6ff-2fd1-4ec5-9eef-696026c3fa7b_cyrqexqw8cc7c!App");
    
        // Tap the button.
        Gesture.Tap(this.UIMap.UIApp1Window.UIButtonButton);
    
        this.UIMap.AssertMethod1();
    }
    
    <CodedUITest>
    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("ed85f6ff-2fd1-4ec5-9eef-696026c3fa7b_cyrqexqw8cc7c!App")
    
            '// Tap the button.
            Gesture.Tap(Me.UIMap.UIApp1Window.UIButtonButton)
    
            Me.UIMap.AssertMethod1()
        End Sub
    

Ausführen des Coded UI-Tests

  • Erstellen Sie den Test, und führen Sie diesen anschließend mit dem Test-Explorer aus.

    Build erstellen und Test mit Test Explorer ausführen

    Die Windows Phone-App wird gestartet, die Aktion für das Tippen auf die Schaltfläche wird abgeschlossen, und die Text-Eigenschaft des Textfelds wird mithilfe der Assert-Methode mit einem Wert versehen und überprüft.

    Windows Phone-Test ausführen

    Nach Abschluss des Tests wird im Test-Explorer das Bestehen des Tests angezeigt.

    Test Explorer-Ergebnisse

Einsatz datengesteuerter Coded UI-Test auf Windows Phone-Apps

Ein Coded UI-Test kann mehrere Male ausgeführt werden, um unterschiedliche Bedingungen mit verschiedenen Datensets zu testen.

Datengesteuerte Coded UI-Test für Windows Phone werden mithilfe des Attributs DataRow auf einer Testmethode definiert.Im folgenden Beispiel verwenden x und y die Werte 1 und 2 für die erste und -1 und -2 für die zweite Iteration des Tests.

[DataRow(1, 2, DisplayName = "Add positive numbers")]
[DataRow(-1, -2, DisplayName = "Add negative numbers")]
[TestMethod]
public void DataDrivingDemo_MyTestMethod(int x, int y)

Fragen und Antworten

F: Warum kann ich die Vorlage für das Erstellen eines Coded UI-Testprojekts in Windows Phone nicht finden?

A: Stellen Sie sicher, dass Visual Studio 2013 Update 2 oder neuer installiert ist.

F: Muss ich die Windows Phone-App im Emulator bereitstellen, sodass ich die UI-Steuerelemente zuordnen kann?

A: Ja, der Test-Generator für codierte UI erfordert, dass ein Emulator läuft und die App an diesen bereitgestellt wird.Ansonsten wird ein Fehler ausgegeben der besagt, dass kein laufender Emulator gefunden werden konnte.

F: Können Tests nur auf dem Emulator ausgeführt werden oder kann ich auch ein physisches Gerät verwenden?

A: Beide Optionen werden unterstützt.Das Ziel für die Umsetzung des Tests wird durch Ändern des Emulatortyps in der Gerätesymbolleiste ausgewählt.Ist "Gerät" ausgewählt, dann muss ein Phone Blue-Gerät mit einem der USB-Anschlüsse des Rechners verbunden sein.

Emulatorversion oder physisches Gerät auswählen

F: Warum wird im Dialogfeld "Test der codierten UI" unter "Code generieren" nicht die Option zum Aufzeichnen des Tests der codierten UI angezeigt?

A: Die Option zum Aufzeichnen wird für Windows Phone-Apps nicht unterstützt.

F: Kann ich einen Test der codierten UI für Windows Phone-Apps auf Grundlage von WinJS, Silverlight oder HTML5 erstellen?

A: Nein, nur XAML-basierte Apps werden unterstützt.

F: Kann ich auf einem Computer, auf dem Windows 8,1 nicht ausgeführt wird, Tests der codierten UI für Windows Phone-Apps erstellen?

A: Nein, die Vorlage "Testprojekt für codierte UI (Windows Phone-Apps)" steht nur unter Windows 8,1 zur Verfügung.

F: Kann ich Steuerelemente auswählen, die sich außerhalb des Emulators befinden?

A: Nein, der Builder erkennt sie nicht.

F: Kann ich den Test-Generator für codierte UI verwenden, um Steuerelemente einem physischen Phone-Gerät zuzuordnen?

A: Nein, der Builder kann UI-Elemente nur zuordnen, wenn die App auf dem Emulator bereitgestellt wurde.

F: Warum kann ich den Code in der Datei "UIMap.Designer" nicht ändern?

A: Alle Codeänderungen, die Sie an der Datei "UIMapDesigner.cs" vornehmen, werden jedes Mal überschrieben, wenn Sie Code mit dem UIMap – Test-Generator für codierte UI generieren.Wenn Sie eine aufgezeichnete Methode ändern müssen, müssen Sie sie in die UIMap.cs-Datei kopieren und umbenennen.Die Datei "UIMap.cs" kann verwendet werden, um Methoden und Eigenschaften in der Datei "UIMapDesigner.cs" zu überschreiben.Sie müssen den Verweis auf die ursprüngliche Methode in der Datei "Coded UITest.cs" entfernen und ihn durch den umbenannten Methodennamen ersetzen.

F: Kann ich einen Test der codierten UI für Windows Phone-Apps aus der Befehlszeile ausführen?

A: Ja, verwenden Sie eine RUNSETTINGS-Datei für das Festlegen des Zielgeräts bei der Ausführung des Tests.Beispiel:

vstest.console.exe “pathToYourCodedUITestDll” /settings:devicetarget.runsettings

Beispiel für eine RUNSETTINGS-Datei:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<MSPhoneTest>
<!--to specify test execution on device, use a TargetDevice option as follows-->
<TargetDevice>Device</TargetDevice>
<!--to specify an emulator instead, use a TargetDevice option like below-->
<!--<TargetDevice>Emulator 8.1 WVGA 4 inch 512MB</TargetDevice>-->
</MSPhoneTest>
</RunSettings>

F: Welche Unterschiede gibt es zwischen Coded UI-Tests für XAML-basierte Windows Store-Apps und Windows Phone-Apps?

A: Es gibt einige wichtige Unterschiede:

Funktion

Windows Store-Apps

Windows Phone-Apps

Ziel für das Ausführen von Tests

Lokaler oder Remotecomputer.Remotecomputer können nur festgelegt werden, wenn ein automatisierter Testfall für das Ausführen von Tests verwendet wurde.Siehe Automatisieren eines Testfalls mit Microsoft Test Manager.

Emulator oder Gerät.Siehe F: Können Tests nur auf dem Emulator ausgeführt werden oder kann ich auch ein physisches Gerät verwenden? in diesem Thema.

Ausführen aus der Befehlszeile

Einstellungsdatei für das Festlegen des Ziels nicht erforderlich.

RUNSETTINGS-Datei für das Festlegen des Ziels erforderlich.

Spezialisierte Klassen für Shell-Steuerelemente

DirectUIControl

UITestControl

WebView-Steuerelement in einer XAML-App

Unterstützt, wenn spezielle HTML*-Klassen für die Interaktion mit HTML-Elementen verwendet werden.Siehe Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.

Wird nicht unterstützt.

Ausführen automatisierter Tests aus MTM

Unterstützt.

Wird nicht unterstützt.

Datengesteuerte Tests

Sie Datengesteuerte Tests zu Informationen über den Einsatz externer Datenquellen und die Verwendung des Attributs DataSource für eine Testmethode.

Daten werden inline mit dem Attribut DataRow für eine Testmethode festgelegt.Siehe Einsatz datengesteuerter Coded UI-Test auf Windows Phone-Apps in diesem Thema.

Informationenen über Coded UI-Test für Windows Store-Apps finden Sie hier: Testen von Windows Store-Apps mit Tests der codierten UI.

Externe Ressourcen

Blog "Anwendungslebenszyklus-Verwaltung von Microsoft Visual Studio": Using Coded UI to test XAML-based Windows Phone apps

Siehe auch

Konzepte

Überprüfen von Code mithilfe der Benutzeroberflächenautomatisierung