Erste Schritte mit UITest und Xamarin.Forms
Wichtig
Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis sie vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie die Migration in Betracht ziehen können.
Erfahren Sie mehr über die Fristen für den Support sowie über mögliche Alternativen.
UITest kann mit Xamarin.Forms verwendet werden, um UI-Tests zu schreiben, die in der Cloud auf Hunderten von Geräten ausgeführt werden.
Übersicht
App Center Test ermöglicht Entwicklern, automatisierte Tests von Benutzeroberflächen für iOS- und Android-Apps zu schreiben. Es sind nur einige kleinere Anpassungen nötig, damit Xamarin.Forms-Apps mit Xamarin.UITest getestet werden können: Unter anderem muss derselbe Testcode verwendet werden. Im Folgenden werden spezifische Tipps gegeben, die dabei helfen sollen, Xamarin.UITest mit Xamarin.Forms auszuführen.
In diesem Leitfaden werden Kenntnisse im Umgang mit Xamarin.UITest vorausgesetzt. Wenn Sie sich mit Xamarin.UITest vertraut machen möchten, empfehlen wir Ihnen folgende Leitfäden:
- Einführung in App Center Test
- Einführung in UITest für Xamarin.Android
- Einführung in UITest für Xamarin.iOS
Sobald Sie ein UI-Testprojekt zu einer Xamarin.Forms-Projektmappe hinzugefügt haben, sind sowohl für Xamarin.Android- als auch für Xamarin.iOS-Anwendungen die gleichen Schritte zu befolgen, um einen Test schreiben und ausführen zu können.
Anforderungen
Lesen Sie Xamarin.UITest, um zu bestätigen, dass Ihr Projekt für automatisierte UI-Tests bereit ist.
Hinzufügen der UITest-Unterstützung zu Xamarin.Forms-Apps
UITest automatisiert die Benutzeroberfläche, indem Steuerelemente auf dem Bildschirm aktiviert und überall Eingaben bereitgestellt werden, die ein Benutzer normalerweise mit der Anwendung interagieren würde. Zum Aktivieren von Tests, die auf Schaltflächen drücken oder Text in ein Feld einfügen können, muss für den Testcode eine Möglichkeit bestehen, die Steuerelemente auf dem Bildschirm zu identifizieren.
Zum Aktivieren des UITest-Codes, der auf Steuerelemente verweisen soll, benötigt jedes Steuerelement einen eindeutigen Bezeichner. Für Xamarin.Forms wird empfohlen, wie im folgenden Beispiel die AutomationId
-Eigenschaft zu verwenden, um diesen Bezeichner festzulegen:
var b = new Button {
Text = "Click me",
AutomationId = "MyButton"
};
var l = new Label {
Text = "Hello, Xamarin.Forms!",
AutomationId = "MyLabel"
};
Die AutomationId
-Eigenschaft kann auch in XAML festgelegt werden:
<Button x:Name="b" AutomationId="MyButton" Text="Click me"/>
<Label x:Name="l" AutomationId="MyLabel" Text="Hello, Xamarin.Forms!" />
Hinweis
AutomationId
ist eine BindableProperty
und kann daher auch mit einem Bindungsausdruck festgelegt werden.
Eine eindeutige AutomationId
sollte zu allen Steuerelementen hinzugefügt werden, für die Tests erforderlich sind (einschließlich Schaltflächen, Texteingaben und Bezeichnungen, deren Wert möglicherweise abgefragt werden muss).
Warnung
Ein InvalidOperationException
Vorgang wird ausgelöst, wenn versucht wird, die AutomationId
Eigenschaft einer Element
mehr als einmal festzulegen.
iOS-Anwendungsprojekt
Um Tests unter iOS auszuführen, muss das Xamarin Test Cloud Agent NuGet-Paket dem Projekt hinzugefügt werden. Kopieren Sie nach dem Hinzufügen den folgenden Code in die AppDelegate.FinishedLaunching
Methode:
#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
Xamarin.Calabash.Start();
#endif
Die Calabash-Assembly verwendet nicht öffentliche Apple-APIs, wodurch Apps vom App Store abgelehnt werden. Allerdings entfernt der Xamarin.iOS-Linker die Calabash-Assembly von der endgültigen IPA, wenn der Code nicht explizit auf sie verweist.
Hinweis
Standardmäßig verfügen Releasebuilds nicht über die ENABLE_TEST_CLOUD
Compilervariable, wodurch die Calabash-Assembly aus dem App-Bündel entfernt wird. Debugbuilds verfügen jedoch standardmäßig über die Compilerdirektive, die verhindert, dass der Linker die Assembly entfernt.
Im folgenden Screenshot wird die Compilervariable ENABLE_TEST_CLOUD
gezeigt, die für Debugbuilds festgelegt ist:
Android-Anwendungsprojekt
Im Gegensatz zu iOS benötigen Android-Projekte keinen speziellen Startcode.
Schreiben von UITests
Weitere Informationen zum Schreiben von UITests finden Sie in der UITest-Dokumentation.
Verwenden von AutomationID in der Xamarin.Forms-UI
Bevor UITests geschrieben werden können, muss die Benutzeroberfläche der Xamarin.Forms-Anwendung skriptfähig sein. Stellen Sie sicher, dass sämtliche Steuerelemente in der Benutzeroberfläche eine AutomationId
haben, damit darauf im Testcode verwiesen werden kann.
Verweisen auf die AutomationID in UITests
Wenn Sie UITests schreiben, wird der AutomationId
-Wert auf jeder Plattform anders dargestellt:
- Unter iOS wird das
id
-Feld verwendet. - Unter Android wird das
label
-Feld verwendet.
Verwenden Sie die Marked
-Testabfrage, um plattformübergreifende UITests zu schreiben, die sowohl unter iOS als auch unter Android die AutomationId
finden:
app.Query(c=>c.Marked("MyButton"))
Die kürzere Form app.Query("MyButton")
funktioniert ebenfalls.
Hinzufügen eines UITest-Projekts zu einer vorhandenen Lösung
In Visual Studio gibt es eine Vorlage, die beim Hinzufügen eines Xamarin.UITest-Projekts zu einer bestehenden Xamarin.Forms-Projektmappe helfen soll:
Klicken Sie mit der rechten Maustaste auf die Projektmappe, und wählen Sie "Neues Projekt speichern>" aus.
Wählen Sie aus den Visual C#-Vorlagen eine Testkategorie aus. Wählen Sie die Plattformübergreifende App-Vorlage "UI-Test-App>" aus:
In diesem Schritt wird der Lösung ein neues Projekt mit den Paketen NUnit, Xamarin.UITest und NUnitTestAdapter NuGet hinzugefügt:
Der NUnitTestAdapter ist ein Drittanbietertestläufer, mit dem Visual Studio NUnit-Tests von Visual Studio ausführen kann.
Das neue Projekt umfasst außerdem zwei Klassen. AppInitializer enthält Code zum Initialisieren und Starten von Tests. Die andere Klasse, Tests, enthält Codebausteine zum Starten von UITests.
Fügen Sie einen Projektverweis aus dem UITest-Projekt zu dem Xamarin.Android-Projekt hinzu:
In diesem Schritt kann NUnitTestAdapter die UITests für die Android-App aus Visual Studio ausführen.
Nach dem Hinzufügen von Xamarin.UITest zur Xamarin.Forms-Lösung ist es möglich, UITests zu erstellen, lokal auszuführen und an Den App Center-Test zu übermitteln.
Zusammenfassung
Xamarin.Forms-Anwendungen können einfach mit Xamarin.UITest getestet werden, indem einfache Mechanismen verwendet werden, sodass die AutomationId
als eindeutiger Ansichtsbezeichner für die Testautomatisierung verfügbar gemacht wird. Sobald Sie ein UI-Testprojekt zu einer Xamarin.Forms-Projektmappe hinzugefügt haben, sind sowohl für Xamarin.Android- als auch für Xamarin.iOS-Anwendungen die gleichen Schritte zu befolgen, um einen Test schreiben und ausführen zu können.
Informationen zum Übermitteln von Tests an App Center-Test finden Sie unter Übermitteln von UITests für Xamarin.Android oder Übermitteln von UITests für Xamarin.iOS. Weitere Informationen zu UITest finden Sie in der App Center Test-Dokumentation.