Wprowadzenie do narzędzi UITest i Xamarin.Forms
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że można nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Funkcja UITest może służyć do pisania testów interfejsu użytkownika w chmurze na setkach urządzeń za pomocą zestawu narzędzi Xamarin.Forms.
Omówienie
Usługa App Center Test umożliwia deweloperom pisanie zautomatyzowanych testów interfejsu użytkownika dla aplikacji dla systemów iOS i Android. Korzystając z drobnych poprawek, aplikacje platformy Xamarin.Forms można testować przy użyciu narzędzia Xamarin.UITest, w tym udostępniania tego samego kodu testowego. W tym artykule przedstawiono konkretne porady dotyczące pracy platformy Xamarin.UITest z platformą Xamarin.Forms.
W tym przewodniku założono, że znajomość platformy Xamarin.UITest. Poniższe przewodniki są zalecane do zapoznania się z narzędziem Xamarin.UITest:
- Wprowadzenie do testu usługi App Center
- Wprowadzenie do interfejsu użytkownikaTest dla platformy Xamarin.Android
- Wprowadzenie do interfejsu użytkownikaTest dla platformy Xamarin.iOS
Po dodaniu projektu UITest do rozwiązania Xamarin.Forms kroki pisania i uruchamiania testów dla aplikacji platformy Xamarin.Forms są takie same jak w przypadku aplikacji Xamarin.Android lub Xamarin.iOS.
Wymagania
Zapoznaj się z tematem Xamarin.UITest , aby potwierdzić, że projekt jest gotowy do automatycznego testowania interfejsu użytkownika.
Dodawanie obsługi interfejsu użytkownikaTest do aplikacji platformy Xamarin.Forms
Funkcja UITest automatyzuje interfejs użytkownika, aktywując kontrolki na ekranie i udostępniając dane wejściowe w dowolnym miejscu, w jakim użytkownik normalnie wchodzi w interakcję z aplikacją. Aby włączyć testy, które mogą nacisnąć przycisk lub wprowadzić tekst w polu, kod testowy będzie potrzebował sposobu identyfikowania kontrolek na ekranie.
Aby włączyć kod UITest do odwołań do kontrolek, każda kontrolka wymaga unikatowego identyfikatora. W zestawie narzędzi Xamarin.Forms zalecanym sposobem ustawienia tego identyfikatora jest użycie AutomationId
właściwości, jak pokazano poniżej:
var b = new Button {
Text = "Click me",
AutomationId = "MyButton"
};
var l = new Label {
Text = "Hello, Xamarin.Forms!",
AutomationId = "MyLabel"
};
Właściwość AutomationId
można również ustawić w języku XAML:
<Button x:Name="b" AutomationId="MyButton" Text="Click me"/>
<Label x:Name="l" AutomationId="MyLabel" Text="Hello, Xamarin.Forms!" />
Uwaga
AutomationId
element jest elementem BindableProperty
i można go również ustawić za pomocą wyrażenia powiązania.
Należy dodać unikatowy element AutomationId
do wszystkich kontrolek wymaganych do testowania (w tym przycisków, wpisów tekstowych i etykiet, których wartość może wymagać wykonania zapytania).
Ostrzeżenie
Zostanie InvalidOperationException
zgłoszony błąd, jeśli zostanie podjęta próba ustawienia AutomationId
właściwości Element
więcej niż raz.
Projekt aplikacji systemu iOS
Aby uruchomić testy w systemie iOS, pakiet NuGet agenta chmury Xamarin musi zostać dodany do projektu. Po dodaniu kodu skopiuj następujący kod do AppDelegate.FinishedLaunching
metody :
#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
Xamarin.Calabash.Start();
#endif
Zestaw Calabash używa niepubliwych interfejsów API firmy Apple, co powoduje odrzucenie aplikacji przez sklep App Store. Jednak konsolidator Xamarin.iOS usunie zestaw Calabash z końcowej usługi IPA, jeśli nie odwołuje się jawnie z kodu.
Uwaga
Domyślnie kompilacje wydania nie mają zmiennej ENABLE_TEST_CLOUD
kompilatora, co powoduje usunięcie zestawu Calabash z pakietu aplikacji. Jednak kompilacje debugowania mają domyślnie zdefiniowaną dyrektywę kompilatora, uniemożliwiając konsolidatorowi usunięcie zestawu.
Poniższy zrzut ekranu przedstawia ENABLE_TEST_CLOUD
zestaw zmiennych kompilatora dla kompilacji debugowania:
Projekt aplikacji systemu Android
W przeciwieństwie do systemu iOS projekty systemu Android nie potrzebują żadnego specjalnego kodu startowego.
Pisanie testów interfejsu użytkownika
Aby uzyskać informacje na temat pisania testów interfejsu użytkownika, zobacz dokumentację UITest.
Używanie identyfikatora AutomationId w interfejsie użytkownika zestawu narzędzi Xamarin.Forms
Aby można było napisać jakiekolwiek testy interfejsu użytkownika, interfejs użytkownika aplikacji Xamarin.Forms musi być skryptowy. Upewnij się, że wszystkie kontrolki w interfejsie użytkownika mają AutomationId
element , aby można było odwoływać się do nich w kodzie testowym.
Odwoływania się do identyfikatora AutomationId w interfejsie użytkownikaTesty
Podczas pisania testów interfejsu AutomationId
użytkownika wartość jest uwidaczniona inaczej na każdej platformie:
- System iOS używa
id
pola . - System Android używa
label
pola.
Aby napisać międzyplatformowe testy interfejsu użytkownika, które znajdą element AutomationId
w systemach iOS i Android, użyj zapytania testowego Marked
:
app.Query(c=>c.Marked("MyButton"))
Krótsza forma app.Query("MyButton")
działa również.
Dodawanie projektu UITest do istniejącego rozwiązania
Program Visual Studio ma szablon, który pomaga dodać projekt Xamarin.UITest do istniejącego rozwiązania Xamarin.Forms:
Kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Plik > nowy projekt.
W obszarze Szablony języka Visual C# wybierz kategorię Test . Wybierz szablon Wieloplatformowa aplikacja > testowa interfejsu użytkownika:
Ten krok dodaje nowy projekt z pakietami NuGet NUnit, Xamarin.UITest i NUnitTestAdapter Do rozwiązania:
NUnitTestAdapter to moduł uruchamiający testy innej firmy, który umożliwia programowi Visual Studio uruchamianie testów NUnit z poziomu programu Visual Studio.
Nowy projekt ma również dwie klasy w nim. AppInitializer zawiera kod ułatwiający inicjowanie i konfigurowanie testów. Druga klasa , Testy, zawiera standardowy kod, aby ułatwić uruchamianie testów interfejsu użytkownika.
Dodaj odwołanie do projektu UITest w projekcie Xamarin.Android:
Ten krok umożliwia NUnitTestAdapter uruchamianie testów interfejsu użytkownika dla aplikacji systemu Android z poziomu programu Visual Studio.
Po dodaniu narzędzia Xamarin.UITest do rozwiązania Xamarin.Forms można utworzyć testy interfejsu użytkownika, uruchomić je lokalnie i przesłać je do usługi App Center Test.
Podsumowanie
Aplikacje platformy Xamarin.Forms można łatwo przetestować za pomocą narzędzia Xamarin.UITest przy użyciu prostego mechanizmu uwidacznianego AutomationId
jako unikatowego identyfikatora widoku na potrzeby automatyzacji testów. Po dodaniu projektu UITest do rozwiązania Xamarin.Forms kroki pisania i uruchamiania testów dla aplikacji platformy Xamarin.Forms są takie same jak w przypadku aplikacji Xamarin.Android lub Xamarin.iOS.
Aby uzyskać informacje o sposobie przesyłania testów do usługi App Center Test, zobacz Przesyłanie testów interfejsu użytkownika dla platformy Xamarin.Android lub Przesyłanie testów interfejsu użytkownika dla platformy Xamarin.iOS. Aby uzyskać więcej informacji na temat interfejsu użytkownikaTest, zobacz dokumentację usługi App Center Test.