Erstellen eines datengesteuerten, codierten UI-Test
Um unterschiedliche Bedingungen zu testen, können Sie die Tests mit anderen Parameterwerten mehrfach ausführen.Datengesteuerte Tests für die codierte UI stellen dafür eine bequeme Möglichkeit dar.Sie definieren Parameterwerte in einer Datenquelle. Jede Zeile in der Datenquelle ist eine Iteration des Tests der codierten UI.Das Gesamtergebnis des Tests basiert auf dem Ergebnis für alle Iterationen.Wenn beispielsweise eine Testiteration fehlschlägt, ist das Gesamttestergebnis ein Fehler.
Anforderungen
- Visual Studio Ultimate, Visual Studio Premium
Erstellen eines datengesteuerten Tests für die codierte UI
Dieses Beispiel erstellt einen Test für die codierte UI, der auf der Anwendung Windows-Rechner ausgeführt wird.Er addiert zwei Zahlen und verwendet eine Assertion, um zu überprüfen, ob die Summe richtig ist.Als Nächstes werden die Assertion und die Parameterwerte für die beiden Zahlen codiert, um datengesteuert zu sein und in einer Datei mit durch Trennzeichen getrennte Werte (CSV) gespeichert zu werden.
Schritt 1: Erstellen Sie einen Test für die codierte UI
Erstellen eines Projekts.
Wählen Sie das Aufzeichnen der Aktionen aus.
Öffnen Sie die Rechner-Anwendung und starten Sie die Testaufzeichnung.
Fügen Sie 1 plus 2 hinzu, halten Sie die Aufzeichnung an und generieren Sie die Testmethode.Später werden wir die Werte dieser Benutzereingaben mit Werten aus einer Datendatei ersetzen.
Schließen Sie den Test-Generator.Die Methode wird dem Test hinzugefügt:
[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. this.UIMap.AddNumbers(); }
Verwenden Sie die AddNumbers()-Methode, um sicherzustellen, dass der Test ausgeführt wird.Platzieren Sie den Cursor in der oben gezeigten Testmethode, öffnen Sie das Kontextmenü und wählen Sie Tests ausführen.(Tastenkombination: STRG + R, T).
Das Testergebnis, das anzeigt, ob der Test erfolgreich war oder fehlgeschlagen ist, wird im Fenster des Test-Explorers angezeigt.Zum Öffnen des Fensters des Test-Explorer wählen Sie aus dem Menü TEST die Auswahl Windows und danach Test-Explorer aus.
Da eine Datenquelle auch zur Assertion von Parameterwerten verwendet werden kann, die vom Test zur Überprüfung erwarteter Werte verwendet wird, fügen wir eine Assertion hinzu, um zu überprüfen, dass die Summe der beiden Zahlen korrekt ist.Platzieren Sie den Cursor in der oben gezeigten Testmethode, öffnen Sie das Kontextmenü, wählen Sie Code für den Test der codierten UI generieren und dann Code zur Verwendung als Test für die codierte UI generieren.
Ordnen Sie das Text-Steuerelement im Rechner zu, der die Summe anzeigt.
Fügen Sie eine Assertion hinzu, die überprüft, ob der Wert der Summe korrekt ist.Wählen Sie die Eigenschaft Text anzeigen, die den Wert 3 hat und wählen Sie dann Assertion hinzufügen aus.Verwenden Sie den Vergleichsoperator AreEqual und stellen Sie sicher, dass der Vergleichswert 3 ist.
Nach dem Konfigurieren der Assertion generieren Sie erneut Code aus dem Generator.Dies erstellt eine neue Methode für die Validierung.
Da die Methode ValidateSum die Ergebnisse der Methode AddNumbers überprüft, verschieben Sie es an das Ende des Codeblocks.
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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
Stellen Sie sicher, dass der Test mithilfe der Methode ValidateSum() ausgeführt wird.Platzieren Sie den Cursor in der oben gezeigten Testmethode, öffnen Sie das Kontextmenü und wählen Sie Tests ausführen.(Tastenkombination: STRG + R, T).
An diesem Punkt werden alle Parameterwerte in ihren Methoden als Konstanten definiert.Als Nächstes erstellen wir ein Dataset, um unseren Test datengesteuert zu machen.
Schritt 2: Erstellen eines Datensatzes
Fügen Sie eine Textdatei in das Projekt DataDrivenSample namens data.csv hinzu.
Füllen Sie die .csv-Datei mit den folgenden Daten aus:
Num1
Num2
Summe
3
4
7
5
6
11
6
8
14
Nach dem Hinzufügen der Daten sollte die Datei wie folgt aussehen:
Es ist wichtig,dass die .csv-Datei mit der richtigen Codierung gespeichert wird.Wählen Sie im Menü DATEI die Auswahl Erweiterte Speicheroptionen aus und wählen als Kodierung Unicode (UTF-8 ohne Signatur)-Codepage 65001 aus.
Die .csv-Datei muss in das Ausgabeverzeichnis kopiert werden oder der Test kann nicht ausgeführt werden.Verwenden Sie das Fenster "Eigenschaften", um ihn zu kopieren.
Da wir jetzt das Dataset erstellt haben, binden wir die Daten für den Test.
Schritt 3: Hinzufügen der Datenquellenbindung
Um die Datenquelle zu binden, fügen Sie ein Attribut DataSource innerhalb des vorhandenen Attributs [TestMethod] hinzu, das sich direkt über der Testmethode befindet.
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), 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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
Die Datenquelle steht Ihnen jetzt für die Verwendung in dieser Testmethode zur Verfügung.
Tipp Informationen dazu finden Sie unter Datenquellen-Attribut-Beispiele im F & A-Bereich für Beispiele, die andere Datenquellentypen wie XML, SQL Express und Excel verwenden.
Führen Sie den Test aus.
Beachten Sie, dass der Test über drei Iterationen ausgeführt wird.Der Grund ist, dass die gebundene Datenquelle drei Zeilen mit Daten enthält.Sie werden aber auch feststellen, dass der Test immer noch die konstanten Parameterwerte verwendet und jedes Mal 1 + 2 mit einer Summe von 3 hinzufügen wird.
Als Nächstes konfigurieren wird den Test, um die Werte in der Datenquelldatei zu verwenden.
Schritt 4: Verwenden der Daten im Test der codierten UI
Fügen Sie using Microsoft.VisualStudio.TestTools.UITesting.WinControls am Anfang der Datei CodedUITest.cs ein:
using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Windows.Input; using System.Windows.Forms; using System.Drawing; using Microsoft.VisualStudio.TestTools.UITesting; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UITest.Extension; using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard; using Microsoft.VisualStudio.TestTools.UITesting.WinControls;
Fügen Sie TestContext.DataRow[] in der Methode CodedUITestMethod1() ein, damit die Werte aus der Datenquelle angewendet werden.Die Datenquellenwerten überschreiben die Konstanten, die den UIMap-Steuerelemente mit den Steuerelementen SearchProperties zugewiesen sind:
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. this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString(); this.UIMap.UICalculatorWindow.UIItemWindow21.UIItem2Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num2"].ToString(); this.UIMap.AddNumbers(); this.UIMap.ValidateSumExpectedValues.UIItem2TextDisplayText = TestContext.DataRow["Sum"].ToString(); this.UIMap.ValidateSum(); }
Verwenden Sie den Editor für den Test der codierten UI, um herauszufinden, zu welchen Sucheigenschaften die Daten codieren werden sollen.
Öffnen Sie die UIMap.uitest-Datei.
Wählen Sie die UI-Aktion aus und beobachten Sie die entsprechende Zuordnung des UI-Steuerelements.Beachten Sie die Zuordnung des Codes, wie z. B. this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.
Öffnen Sie im Fenster "Eigenschaften" die Auswahl Sucheigenschaften.Der Wert der Sucheigenschaften Name ist der Wert, der im Code unter Verwendung der Datenquelle manipuliert wird.Angenommen, den SearchProperties werden die Werte in der ersten Spalte jeder Datenzeile zugewiesen: UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();Bei den drei Iterationen dieses Tests ändert der Wert Name für die Sucheigenschaft auf 3, dann auf 5 und zuletzt auf 6.
Speichern Sie die Projektmappe.
Schritt 5: Ausführen des datengesteuerten Tests
Überprüfen Sie durch erneutes Ausführen des Tests, dass der Test jetzt datengesteuerte ist.
Der Testlauf über die drei Iterationen sollte unter Verwendung der Werte in der CSV-Datei angezeigt werden.Die Überprüfung sollte auch funktionieren und der Test sollte im Test-Explorer als erfolgreich angezeigt werden.
Leitfaden
Weitere Informationen finden Sie unter Tests für fortlaufende Übermittlung mit Visual Studio 2012 – Kapitel 2: Komponententests: Interne Tests und Tests für fortlaufende Übermittlung mit Visual Studio 2012 – Kapitel 5: Automatisierte Systemtests
Fragen und Antworten
Was bedeuten die Attribute für Datenquellen für andere Datenquellentypen wie SQL Express oder XML?
Sie können die Beispiel-Datenquellenzeichenfolgen in der folgenden Tabelle verwenden, indem Sie diese in Ihren Code kopieren und die erforderlichen Anpassungen vornehmen.
Datenquellentyp |
Attribut für die Datenquelle |
---|---|
CSV |
|
Excel |
|
Testfall in Team Foundation Server |
|
XML |
|
SQL Express |
|
F: Kann ich datengesteuerte Tests für meine Windows Phone-App verwenden?
A: Ja.Datengesteuerte kodierte 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)
Weitere Informationen finden Sie unter Use Data-driven coded UI tests on Windows Phone apps.
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 Benutzeroberfläche generieren.In diesem Beispiel und in den meisten Fällen können die Änderungen am Code, die benötigt werden, um einen Test mit Verwendung einer Datenquelle freizugeben, zu einer Quelldatei für den Test verwendet werden (das ist CodedUITest1.cs).
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.
Siehe auch
Referenz
Konzepte
Überprüfen von Code mithilfe der Benutzeroberflächenautomatisierung
Empfohlene Vorgehensweisen für Tests der codierten UI
Unterstützte Konfigurationen und Plattformen für Tests der codierten UI und Aktionsaufzeichnungen