Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 基於UIAutomator的實現及代碼生成的Android UI自動化測試介紹

基於UIAutomator的實現及代碼生成的Android UI自動化測試介紹

編輯:Android開發實例

  Android UI自動化測試這塊一直是google忽略或者技術薄弱的地方,以至於他沒有提供一套完整的自動化測試框架。國內公司做UI自動化測試一般都借助於第三方測試框架如robotium,淘寶測試(TMTS),Robolectric等。但這些測試框架或多或少都存在一些跨應用,事件等待等不足,無法滿足UI自動化的所有要求。
  Android4.0之後,google仿照微軟UIAutomation引入了UIAutomator測試框架,雖然是剛剛推出,各個細節還比較粗糙,但畢竟是Android原生的測試技術,再加上這套東西微軟已經使用了多年,已經是很成熟了, 所以相對第三方測試框架還是比較有優勢的。接觸到uiautomator之後我第一個想法就是可以仿照微軟POM/LFM將測試代碼寫得更加優雅。整個思路就是一個分層設計,控件的定義,和控件的操作分為兩層,而測試方法調用底下兩層,做為第三層。這麼設計的好處是明顯的:較少代碼編寫量,並可以在團隊寫代碼中更加容易保持代碼風格;代碼易維護,改動任何一層代碼對其他層影響較小;可以針對Android系統泛濫的弊端針對不同的android系統或手機,生成一種通用庫,這樣很容易做手機多機適配運行。設計圖如下:

 

  那麼針對uiautomator的代碼自動生成或者說錄制怎麼做呢?

  有一個取巧的辦法可以通過UiAutomator將頁面所有的控件保存到xml中,然後解析xml,生成POM層的代碼,雖然只能簡單生成POM層代碼,但這至少也減少了百分之三十的編碼量。

  其實可以考慮使用AccessibilityService,監控用戶輸入,在onAccessibilityEvent(AccessibilityEvent)方法中解析Event,根據Event類型和其攜帶的控件屬性生成基於UIAutomator的測試代碼,然後將測試代碼拉出手機,放入事先建好的工程模板中編譯即可。

  1. EventSource eventSource = praser.prase(event.toString());  
  2.  
  3.         // 設置篩選條件,選擇特定事件生成代碼。  
  4.         if (Config.MatchedEvents.contains(eventSource.getEventType())) {  
  5.             generator.generateCode(template.getMethodStepSteam(eventSource));  
  6.         } 

這裡不給出具體實現了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved