移動APP的自動化測試


 開發移動應用,最耗時耗力的就是手動測試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的用戶界面的完美自動化測試!這樣可以省時省力,高效提升測試效率!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM