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
AutomationId
BindableProperty
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:
Çözüme sağ tıklayın ve Dosya > Yeni Proje'yi seçin.
Visual C# Şablonları'ndan Test kategorisini seçin. Ui Test Uygulaması > Platformlar Arası şablonunu seçin:
Bu adım çözüme NUnit, Xamarin.UITest ve NUnitTestAdapter NuGet paketleriyle yeni bir proje ekler:
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.
UITest projesinden Xamarin.Android projesine proje başvurusu ekleyin:
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.