開發移動應用,最耗時耗力的就是手動測試APP的每個功能點或修復bug。有人就會提議App的業務邏輯可以使用nUnit或xUnit測試單元來輔助完成。那用戶界面要如何測試?眾所周知,移動設備多種多樣,數量及其龐大,設備的類型也是各式各樣,要如何才能保證App用戶界面在成千上百iOS和Android設備中都能正常顯示,沒有錯誤?這是很多APP開發人員最頭疼的事情了。
今天,本文主要介紹如何使用Xamarin提供的UITest來測試app界面。
訪問控件
當使用Xamarin.Forms創建應用程序時,會使用Xamarin.Forms的控件和XAML創建用戶界面。運行時,Xamarin.Forms會根據我們創建的用戶界面生成對應的原生應用程序。由于我們正在開發針對Xamarin.Forms控件,因此可通過StyleID 特殊屬性在Xamarin.UITests中的訪問權限。StyleID可以被設置為任意字符串,創建任何測試功能都可以被直接訪問,且無論在iOS或Android應用中StyleID都是一致的,這就意味著不需要特別管理這些ID。
XAML
<Button x:Name="ButtonLogin" StyleId="ButtonLogin" Grid.Row="5" BackgroundColor="#F44336" BorderRadius="0" TextColor="White" Text="Login to Meetup" Command="{Binding LoginCommand}" />
c#
var buttonLogin = new Button { StyleId = "ButtonLogin", Text = "Login to Meetup", BorderRadius = 0, TextColor = Color.White, BackgroundColor = Color.FromHex("F443336") };
最后需要做的就是在iOS和Android 應用中添加代碼,在原生控件中使用StyleId。這樣可以調用Xamarin.UITest。這些代碼需要在App的最終版注釋掉。
iOS 設置
打開iOS的AppDelegate.cs 文件,在FinishedLaunching方法中添加以下代碼:
1: Forms.ViewInitialized += (sender, e) =>
2: {
3: if (null != e.View.StyleId)
4: {
5: e.NativeView.AccessibilityIdentifier = e.View.StyleId;
6: }
7: };
Android 設置
打開MainActivity.cs文件,在OnCreate方法中添加以下代碼:
1: Xamarin.Forms.Forms.ViewInitialized += (sender, e) =>
2: {
3: if (!string.IsNullOrWhiteSpace(e.View.StyleId))
4: {
5: e.NativeView.ContentDescription = e.View.StyleId;
6: }
7: };
現在,可以運行UITest ,打開REPL,則會出現ButtonLogin :
在UITest,ButtonLogin常用于驗證button的交互功能即登錄屏幕是否正常出現:
1: [Test]
2: public void OpenLoginScreen()
3: {
4: app.Screenshot("App Launches");
5: app.Tap("ButtonLogin");
6: app.Screenshot("When I tap Login");
7: Assert.IsNotNull(app.Query("EntryUserName").Single());
8: app.Screenshot("Login Page is Visible");
9: }
親們學會了嗎?通過本篇文章能夠讓我們實現APP的用戶界面的完美自動化測試!這樣可以省時省力,高效提升測試效率!
文章列表