Sdílet prostřednictvím


Začínáme s UITestem a Xamarin.Forms

Důležité

31. března 2025 je naplánované vyřazení sady Visual Studio App Center. I když můžete Visual Studio App Center dál používat, dokud nebude plně vyřazený, existuje několik doporučených alternativ, na které můžete zvážit migraci.

Přečtěte si další informace o časových osách podpory a alternativách.

UiTest lze použít s Xamarin.Forms k zápisu testů uživatelského rozhraní, které se budou spouštět v cloudu na stovkách zařízení.

Přehled

App Center Test umožňuje vývojářům psát automatizované testy uživatelského rozhraní pro aplikace pro iOS a Android. V některých menších úpravách je možné aplikace Xamarin.Forms testovat pomocí Xamarin.UITestu, včetně sdílení stejného testovacího kódu. Tento článek představuje konkrétní tipy pro práci S Xamarin.UITest s Xamarin.Forms.

Tato příručka předpokládá, že znalost Xamarin.UITest. Pro seznámení s Xamarin.UITestem se doporučuje následující příručky:

Po přidání projektu UITest do řešení Xamarin.Forms jsou kroky pro zápis a spuštění testů pro aplikaci Xamarin.Forms stejné jako pro aplikaci Xamarin.Android nebo Xamarin.iOS.

Požadavky

Pokud chcete ověřit, že je váš projekt připravený k automatizovanému testování uživatelského rozhraní, projděte si Xamarin.UITest.

Přidání podpory UITest do aplikací Xamarin.Forms

UITest automatizuje uživatelské rozhraní aktivací ovládacích prvků na obrazovce a poskytnutím vstupu kdekoli, kde by uživatel normálně pracoval s aplikací. Pokud chcete povolit testy, které můžou stisknout tlačítko nebo zadat text do pole , bude testovací kód potřebovat způsob, jak identifikovat ovládací prvky na obrazovce.

Aby kód UITest mohl odkazovat na ovládací prvky, musí mít každý ovládací prvek jedinečný identifikátor. V Xamarin.Forms doporučujeme nastavit tento identifikátor pomocí AutomationId vlastnosti, jak je znázorněno níže:

var b = new Button {
    Text = "Click me",
    AutomationId = "MyButton"
};
var l = new Label {
    Text = "Hello, Xamarin.Forms!",
    AutomationId = "MyLabel"
};

Vlastnost AutomationId lze také nastavit v jazyce XAML:

<Button x:Name="b" AutomationId="MyButton" Text="Click me"/>
<Label x:Name="l" AutomationId="MyLabel" Text="Hello, Xamarin.Forms!" />

Poznámka:

AutomationId je a BindableProperty tak lze nastavit také pomocí vazbového výrazu.

Jedinečná AutomationId položka by se měla přidat do všech ovládacích prvků, které jsou potřeba k testování (včetně tlačítek, textových položek a popisků, jejichž hodnota může být potřeba dotazovat).

Upozorňující

Vyvolá InvalidOperationException se při pokusu AutomationId o nastavení vlastnosti Element více než jednou.

Projekt aplikace pro iOS

Pokud chcete spouštět testy v iOSu , musí být do projektu přidán balíček NuGet xamarin Test Cloud Agent. Po přidání zkopírujte do AppDelegate.FinishedLaunching metody následující kód:

#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
Xamarin.Calabash.Start();
#endif

Sestavení Calabash používá neveřejná rozhraní Apple API, která způsobují odmítnutí aplikací z App Storu. Linker Xamarin.iOS však odebere sestavení Calabash z konečné IPA, pokud není výslovně odkazováno z kódu.

Poznámka:

Ve výchozím nastavení sestavení vydané verze nemají proměnnou kompilátoru ENABLE_TEST_CLOUD , která způsobí odebrání sestavení Calabash ze sady aplikací. Ladicí sestavení však mají ve výchozím nastavení definovanou direktivu kompilátoru, což brání linkeru v odebrání sestavení.

Následující snímek obrazovky ukazuje sadu proměnných kompilátoru ENABLE_TEST_CLOUD pro sestavení ladění:

Projekt aplikace pro Android

Na rozdíl od iOSu projekty Android nepotřebují žádný speciální spouštěcí kód.

Psaní testů UITests

Informace o psaní testů UITests naleznete v dokumentaci k UITest.

Použití AutomationId v uživatelském rozhraní Xamarin.Forms

Před zápisem jakýchkoli testů UITests musí být uživatelské rozhraní aplikace Xamarin.Forms skriptovatelné. Ujistěte se, že všechny ovládací prvky v uživatelském rozhraní mají možnost AutomationId odkazovat v testovacím kódu.

Odkaz na AutomationId v UITests

Při psaní testů UITests AutomationId se hodnota na jednotlivých platformách zobrazí odlišně:

  • IOS používá id pole.
  • Android používá label pole.

Pokud chcete napsat testy UITesty pro různé platformy, které najdou v iOSu AutomationId i Androidu Marked , použijte testovací dotaz:

app.Query(c=>c.Marked("MyButton"))

Kratší forma app.Query("MyButton") také funguje.

Přidání projektu UITest do existujícího řešení

Visual Studio obsahuje šablonu, která pomáhá přidat projekt Xamarin.UITest do existujícího řešení Xamarin.Forms:

  1. Klikněte pravým tlačítkem na řešení a vyberte Soubor > nový projekt.

  2. V šablonách Visual C# vyberte kategorii Test . Vyberte šablonu aplikace pro testování > uživatelského rozhraní pro různé platformy:

    Přidat nový projekt

    Tento krok přidá do řešení nový projekt s balíčky NuGet NUnit, Xamarin.UITest a NUnitTestAdapter :

    Správce balíčků NuGet

    NUnitTestAdapter je spouštěč testů třetí strany, který sadě Visual Studio umožňuje spouštět testy NUnit ze sady Visual Studio.

    Nový projekt má také dvě třídy. AppInitializer obsahuje kód, který pomáhá inicializovat a nastavit testy. Druhá třída, Testy, obsahuje často používaný kód, který pomáhá spustit UITests.

  3. Přidejte odkaz na projekt z projektu UITest do projektu Xamarin.Android:

    Správce referenčních informací k projektu

    Tento krok umožňuje NUnitTestAdapter spustit UITests pro aplikaci pro Android ze sady Visual Studio.

Po přidání Xamarin.UITest do řešení Xamarin.Forms je možné vytvářet testy UITest, spouštět je místně a odesílat je do testu app Center.

Shrnutí

Aplikace Xamarin.Forms je možné snadno testovat pomocí Xamarin.UITest pomocí jednoduchého mechanismu pro zveřejnění jedinečného identifikátoru AutomationId zobrazení pro automatizaci testů. Po přidání projektu UITest do řešení Xamarin.Forms jsou kroky pro zápis a spuštění testů pro aplikaci Xamarin.Forms stejné jako pro aplikaci Xamarin.Android nebo Xamarin.iOS.

Informace o tom, jak odesílat testy do testu App Center, najdete v tématu Odesílání testů UITests pro Xamarin.Android nebo Odesílání testů UITests pro Xamarin.iOS. Další informace o UITest naleznete v dokumentaci k testování v App Center.