Introduzione a UITest e Xamarin.Forms
Importante
Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile considerare la migrazione.
Altre informazioni sulle sequenze temporali e sulle alternative di supporto.
UITest può essere usato con Xamarin.Forms per scrivere test dell'interfaccia utente da eseguire nel cloud su centinaia di dispositivi.
Panoramica
App Center Test consente agli sviluppatori di scrivere test dell'interfaccia utente automatizzati per app iOS e Android. Con alcune modifiche di lieve entità, le app Xamarin.Forms possono essere sottoposte a test tramite Xamarin.UITest, inclusa la condivisione dello stesso codice di test. Questo articolo presenta alcuni suggerimenti specifici per l'uso di Xamarin.UITest con Xamarin.Forms.
Questa guida presuppone che l'utente abbia familiarità con Xamarin.UITest. Per acquisire familiarità con Xamarin.UITest, è consigliata la lettura delle guide seguenti:
- Introduction to App Center Test (Introduzione ad App Center Test)
- Introduzione a UITest per Xamarin.Android
- Introduzione a UITest per Xamarin.iOS
Dopo aver aggiunto un progetto UITest a una soluzione Xamarin.Forms, le operazioni richieste per la scrittura e l'esecuzione dei test per un'applicazione Xamarin.Forms sono le stesse per un'applicazione Xamarin.Android o Xamarin.iOS.
Requisiti
Fare riferimento a Xamarin.UITest per verificare che il progetto sia pronto per i test automatizzati dell'interfaccia utente.
Aggiunta del supporto UITest alle app Xamarin.Forms
UITest automatizza l'interfaccia utente attivando i controlli sullo schermo e fornendo input ovunque un utente interagisca normalmente con l'applicazione. Per abilitare test che consentano di premere un pulsante o immettere testo in una casella, il codice di test dovrà essere in grado di identificare i controlli sullo schermo.
Per consentire al codice UITest di fare riferimento ai controlli, ogni controllo ha bisogno di un identificatore univoco. In Xamarin.Forms il metodo consigliato per impostare questo identificatore è usare la proprietà AutomationId
come illustrato di seguito:
var b = new Button {
Text = "Click me",
AutomationId = "MyButton"
};
var l = new Label {
Text = "Hello, Xamarin.Forms!",
AutomationId = "MyLabel"
};
La proprietà AutomationId
può essere impostata anche in XAML:
<Button x:Name="b" AutomationId="MyButton" Text="Click me"/>
<Label x:Name="l" AutomationId="MyLabel" Text="Hello, Xamarin.Forms!" />
Nota
AutomationId
è un oggetto BindableProperty
e può quindi essere impostata anche con un'espressione di binding.
Aggiungere un oggetto AutomationId
univoco a tutti i controlli richiesti per i test, tra cui pulsanti, voci di testo ed etichette il cui valore può richiedere l'esecuzione di una query.
Avviso
Verrà generata un'eccezione InvalidOperationException
se viene effettuato un tentativo di impostare la AutomationId
proprietà di un oggetto Element
più volte.
Progetto di applicazione iOS
Per eseguire test in iOS, è necessario aggiungere il pacchetto NuGet Xamarin Test Cloud Agent al progetto. Dopo l'aggiunta, copiare il codice seguente nel AppDelegate.FinishedLaunching
metodo :
#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
Xamarin.Calabash.Start();
#endif
L'assembly Calabash usa API Apple non pubbliche, che causano il rifiuto delle app da parte dell'App Store. Tuttavia, il linker Xamarin.iOS rimuoverà assembly Calabash dall'IPA finale se non vi viene fatto riferimento in modo esplicito dal codice.
Nota
Per impostazione predefinita, le build di versione non hanno la variabile del ENABLE_TEST_CLOUD
compilatore, che causa la rimozione dell'assembly Calabash dal bundle dell'app. Tuttavia, le compilazioni di debug hanno la direttiva del compilatore definita per impostazione predefinita, impedendo al linker di rimuovere l'assembly.
La schermata seguente mostra la variabile del compilatore ENABLE_TEST_CLOUD
impostata per le compilazioni di debug:
Progetto di applicazione Android
A differenza di iOS, i progetti Android non necessitano di codice di avvio speciale.
Scrittura di test dell'interfaccia utente
Per informazioni sulla scrittura di test dell'interfaccia utente, fare riferimento alla documentazione relativa a UITest.
Usare AutomationId nell'interfaccia utente di Xamarin.Forms
Prima di scrivere qualsiasi test dell'interfaccia utente, l'interfaccia utente dell'applicazione Xamarin.Forms deve essere gestibile tramite script. Verificare che in tutti i controlli dell'interfaccia utente sia presente un AutomationId
, in modo che sia possibile farvi riferimento nel codice di test.
Riferimento ad AutomationId nei test dell'interfaccia utente
Durante la scrittura di test dell'interfaccia utente, il valore AutomationId
viene esposto in modo differente in ogni piattaforma:
- iOS usa il campo
id
. - Android usa il campo
label
.
Per scrivere test dell'interfaccia utente multipiattaforma che troveranno AutomationId
sia in iOS che in Android, usare la query di test Marked
:
app.Query(c=>c.Marked("MyButton"))
Può essere usata anche la forma abbreviata app.Query("MyButton")
.
Aggiunta di un progetto UITest a una soluzione esistente
Visual Studio include un modello per l'aggiunta di un progetto Xamarin.UITest a una soluzione Xamarin.Forms esistente:
Fare clic con il pulsante destro del mouse sulla soluzione e scegliere File > Nuovo progetto.
Dai modelli Visual C# selezionare la categoria Test. Selezionare il modello App di test dell'interfaccia > utente multipiattaforma :
Questo passaggio aggiunge un nuovo progetto con i pacchetti NuGet NUnit, Xamarin.UITest e NUnitTestAdapter alla soluzione:
NUnitTestAdapter è un test runner di terze parti che consente a Visual Studio di eseguire test NUnit da Visual Studio.
Il nuovo progetto include anche due classi. AppInitializer contiene codice per inizializzare e configurare i test. L'altra classe, Tests, contiene il codice standard per avviare i test dell'interfaccia utente.
Aggiungere un riferimento al progetto dal progetto UITest a quello Xamarin.Android:
Questo passaggio consente a NUnitTestAdapter di eseguire uiTests per l'app Android da Visual Studio.
Dopo aver aggiunto Xamarin.UITest alla soluzione Xamarin.Forms, è possibile creare uiTest, eseguirli in locale e inviarli al test di App Center.
Riepilogo
Le applicazioni Xamarin.Forms si possono testare facilmente con Xamarin.UITest usando un semplice meccanismo per esporre AutomationId
come identificatore univoco della visualizzazione per l'automazione di test. Dopo aver aggiunto un progetto UITest a una soluzione Xamarin.Forms, le operazioni richieste per la scrittura e l'esecuzione dei test per un'applicazione Xamarin.Forms sono le stesse per un'applicazione Xamarin.Android o Xamarin.iOS.
Per informazioni su come inviare test al test di App Center, vedere Invio di test dell'interfaccia utente per Xamarin.Android o invio di test dell'interfaccia utente per Xamarin.iOS. Per altre informazioni su UITest, fare riferimento alla documentazione di App Center Test.