Udostępnij za pośrednictwem


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:

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:

  1. Kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Plik > nowy projekt.

  2. W obszarze Szablony języka Visual C# wybierz kategorię Test . Wybierz szablon Wieloplatformowa aplikacja > testowa interfejsu użytkownika:

    Dodawanie nowego projektu

    Ten krok dodaje nowy projekt z pakietami NuGet NUnit, Xamarin.UITest i NUnitTestAdapter Do rozwiązania:

    NuGet Package Manager

    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.

  3. Dodaj odwołanie do projektu UITest w projekcie Xamarin.Android:

    Menedżer odwołań projektu

    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.