UITest ve Xamarin.Forms ile çalışmaya başlama

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

UITest, yüzlerce cihazda bulutta çalıştırılacak kullanıcı arabirimi testleri yazmak için Xamarin.Forms ile kullanılabilir.

Genel bakış

App Center Testi , geliştiricilerin iOS ve Android uygulamaları için otomatik kullanıcı arabirimi testleri yazmasına olanak tanır. Bazı küçük ayarlamalarla, Xamarin.Forms uygulamaları aynı test kodunun paylaşılması da dahil olmak üzere Xamarin.UITest kullanılarak test edilebilir. Bu makalede Xamarin.UITest dosyasınıN Xamarin.Forms ile çalışmasını sağlamak için belirli ipuçları verilmektedir.

Bu kılavuzda Xamarin.UITest hakkında bilgi sahibi olduğunuz varsayılır. Xamarin.UITest hakkında bilgi edinmek için aşağıdaki kılavuzlar önerilir:

Bir UITest projesi bir Xamarin.Forms çözümüne eklendikten sonra, Xamarin.Forms uygulaması için testleri yazma ve çalıştırma adımları, Xamarin.Android veya Xamarin.iOS uygulamasıyla aynıdır.

Gereksinimler

Projenizin otomatik kullanıcı arabirimi testine hazır olduğunu onaylamak için Xamarin.UITest'e bakın.

Xamarin.Forms uygulamalarına UITest desteği ekleme

UITest, ekrandaki denetimleri etkinleştirerek ve kullanıcının normalde uygulamayla etkileşim kuracağı her yerde giriş sağlayarak kullanıcı arabirimini otomatikleştirir. Bir düğmeye basabilen veya kutuya metin girebilen testleri etkinleştirmek için test kodunun ekrandaki denetimleri tanımlamanın bir yolu gerekir.

UITest kodunun denetimlere başvurmasını sağlamak için her denetimin benzersiz bir tanımlayıcıya ihtiyacı vardır. Xamarin.Forms'da, bu tanımlayıcıyı ayarlamanın önerilen yolu aşağıda gösterildiği gibi özelliğini kullanmaktır AutomationId :

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

AutomationId Özelliği XAML'de de ayarlanabilir:

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

Not

AutomationIdBindableProperty bir ve şeklindedir ve bağlama ifadesiyle de ayarlanabilir.

Test için gerekli olan tüm denetimlere (düğmeler, metin girişleri ve değeri sorgulanması gerekebilecek etiketler dahil) benzersiz AutomationId bir eklenmelidir.

Uyarı

birden InvalidOperationException çok kez özelliğini ayarlamaya AutomationId çalışılırsa bir Element oluşturulur.

iOS uygulama projesi

iOS üzerinde testleri çalıştırmak için Xamarin Test Bulut Aracısı NuGet paketinin projeye eklenmesi gerekir. Eklendikten sonra aşağıdaki kodu yöntemine AppDelegate.FinishedLaunching kopyalayın:

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

Calabash derlemesi, uygulamaların App Store tarafından reddedilmesine neden olan genel olmayan Apple API'lerini kullanır. Ancak Xamarin.iOS bağlayıcısı, koddan açıkça başvurulmazsa calabash derlemesini son IPA'dan kaldırır.

Not

Varsayılan olarak, yayın derlemelerinde derleyici değişkeni yoktur ENABLE_TEST_CLOUD ve bu da Calabash derlemesinin uygulama paketinden kaldırılmasına neden olur. Ancak hata ayıklama derlemelerinde varsayılan olarak tanımlanan derleyici yönergesi bulunur ve bağlayıcının derlemeyi kaldırması engellenir.

Aşağıdaki ekran görüntüsünde ENABLE_TEST_CLOUD Hata ayıklama derlemeleri için derleyici değişken kümesi gösterilmektedir:

Android uygulama projesi

iOS'un aksine, Android projelerinin özel bir başlangıç koduna ihtiyacı yoktur.

UITests Yazma

UITests yazma hakkında bilgi için bkz . UITest belgeleri.

Xamarin.Forms kullanıcı arabiriminde AutomationId kullanma

Herhangi bir UITest yazılabilmesi için önce Xamarin.Forms uygulaması kullanıcı arabirimi betiklenebilir olmalıdır. Kullanıcı arabirimindeki tüm denetimlerin, test kodunda başvurulabilmesi için bir AutomationId öğesine sahip olduğundan emin olun.

UITests'te AutomationId'ye başvurma

UITests yazarken, AutomationId değer her platformda farklı şekilde gösterilir:

  • iOS alanı id kullanır.
  • Android bu label alanı kullanır.

Hem iOS hem de Android'de öğesini bulacak AutomationId platformlar arası UITest'ler yazmak için test sorgusunu Marked kullanın:

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

Daha kısa form app.Query("MyButton") da çalışır.

Mevcut bir çözüme UITest projesi ekleme

Visual Studio'nun mevcut bir Xamarin.Forms çözümüne Xamarin.UITest projesi eklemeye yardımcı olacak bir şablonu vardır:

  1. Çözüme sağ tıklayın ve Dosya > Yeni Proje'yi seçin.

  2. Visual C# Şablonları'ndan Test kategorisini seçin. Ui Test Uygulaması > Platformlar Arası şablonunu seçin:

    Yeni Proje Ekle

    Bu adım çözüme NUnit, Xamarin.UITest ve NUnitTestAdapter NuGet paketleriyle yeni bir proje ekler:

    NuGet Paket Yöneticisi

    NUnitTestAdapter, Visual Studio'nın Visual Studio'dan NUnit testleri çalıştırmasına olanak tanıyan bir üçüncü taraf test çalıştırıcısıdır.

    Yeni projenin içinde iki sınıf da vardır. AppInitializer , testleri başlatmaya ve ayarlamaya yardımcı olacak kod içerir. Diğer sınıf olan Testler, UITests'i başlatmaya yardımcı olacak ortak kod içerir.

  3. UITest projesinden Xamarin.Android projesine proje başvurusu ekleyin:

    Proje Başvuru Yöneticisi

    Bu adım, NUnitTestAdapter'ın Visual Studio'dan Android uygulaması için UITests'i çalıştırmasına olanak tanır.

Xamarin.Forms çözümüne Xamarin.UITest ekledikten sonra UITest'ler oluşturabilir, bunları yerel olarak çalıştırabilir ve App Center Test'e gönderebilirsiniz.

Özet

Xamarin.Forms uygulamaları, test otomasyonu için benzersiz bir görünüm tanımlayıcısı olarak kullanıma sunan AutomationId basit bir mekanizma kullanılarak Xamarin.UITest ile kolayca test edilebilir. Bir UITest projesi bir Xamarin.Forms çözümüne eklendikten sonra, Xamarin.Forms uygulaması için testleri yazma ve çalıştırma adımları, Xamarin.Android veya Xamarin.iOS uygulamasıyla aynıdır.

App Center Test'e test gönderme hakkında bilgi için bkz . Xamarin.Android için UITests Gönderme veya Xamarin.iOS için UITests Gönderme. UITest hakkında daha fazla bilgi için App Center Test belgelerine bakın.