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
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:
Klikněte pravým tlačítkem na řešení a vyberte Soubor > nový projekt.
V šablonách Visual C# vyberte kategorii Test . Vyberte šablonu aplikace pro testování > uživatelského rozhraní pro různé platformy:
Tento krok přidá do řešení nový projekt s balíčky NuGet NUnit, Xamarin.UITest a NUnitTestAdapter :
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.
Přidejte odkaz na projekt z projektu UITest do projektu Xamarin.Android:
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.