文章出處

 開發移動應用,最耗時耗力的就是手動測試APP的每個功能點或修復bug。有人就會提議App的業務邏輯可以使用nUnit或xUnit測試單元來輔助完成。那用戶界面要如何測試?眾所周知,移動設備多種多樣,數量及其龐大,設備的類型也是各式各樣,要如何才能保證App用戶界面在成千上百iOS和Android設備中都能正常顯示,沒有錯誤?這是很多APP開發人員最頭疼的事情了。

今天,本文主要介紹如何使用Xamarin提供的UITest來測試app界面。

clip_image002

訪問控件

當使用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 :

LoginButtonVisible

在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的用戶界面的完美自動化測試!這樣可以省時省力,高效提升測試效率!


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()