編輯: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的測試代碼,然後將測試代碼拉出手機,放入事先建好的工程模板中編譯即可。
- EventSource eventSource = praser.prase(event.toString());
- // 設置篩選條件,選擇特定事件生成代碼。
- if (Config.MatchedEvents.contains(eventSource.getEventType())) {
- generator.generateCode(template.getMethodStepSteam(eventSource));
- }
這裡不給出具體實現了。
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
目前Android已經在只能手機市場已經具有強大的霸主地位,也吸引了越來越多的追捧者。Android的學習也越來越火。但是,報名費用確實大多人望而卻步 一、新建項
一 、前言 上次模仿開發者頭條首頁實現了一個版本,給345大神,我的產品經理一看,又被鄙視了一把,說還在用老的技術,於是乎這三天把整個design
本文實例講述了Android編程單元測試。分享給大家供大家參考,具體如下: 完整實例代碼代碼點擊此處本站下載。 本文是在上一篇文章《java編程之單元測試(Jun