Android UI 測試框架
GettingStart
使 用Zinc30需要將zinc.jar包放入Android Test Project中並加入到build path之中,同時需要在AndroidManifest.xml的manifest元素下加入: <supports-screens android:anyDensity="true" />
對於使用Zinc30的示例專案請在downloads區下載
示例演示
這裡以測試登陸功能為例,假如有兩個Activity,其中一個為LoginView,主要是登陸頁面,另一個為MainView,主要是登陸成功後跳轉的頁面。這裡也採用PageFactory模式來書寫,先寫ActivityPage:
- public class LoginViewPage extends BaseActivityPage {
- public LoginViewPage(Zinc zinc) {
- super(zinc);
- }
- @FindBy(id = R.id.username)
- private AndroidElement usernameEdit;
- @FindBy(type = AndroidElementType.EditText, index = 1)
- private AndroidElement passwordEdit;
- @FindBy(type = AndroidElementType.Button, text = "登陸")
- private AndroidElement loginButton;
- public MainViewPage login(String username, String password) {
- usernameEdit.clear();
- usernameEdit.sendKeys(username);
- passwordEdit.clear();
- passwordEdit.sendKeys(password);
- loginButton.click();
- return new MainViewPage(zinc);
- }
- }
1、根據id來查詢,即自動生成的R檔案中的id值;
2、根據文字來查詢,需要帶上元素型別。比如@FindBy(type = AndroidElementType.Button, text = "登陸")為查詢寫有登陸文字的Button控制元件。如果元素型別不確定可以使用Unkown型別;
3. 根據索引來查詢,需要帶上元素型別。比如@FindBy(type = AndroidElementType.EditText, index = 1)為查詢第二個EditText控制元件。這裡index以0標識第一個元素。
接下來我們來看Test Case如何來書寫,其實Test case主要組合已有的ActivityPage類:
- public class LoginViewTest extends ZincTestCase<LoginView> {
- public LoginViewTest() {
- super("com.baidu.zinc30.sample", LoginView.class);
- }
- public void testLoginSuccess() {
- LoginViewPage loginViewPage = new LoginViewPage(zinc);
- MainViewPage mainViewPage = loginViewPage.login("zinc", "zinc");
- Assert.assertTrue("should login success",
- mainViewPage.isActivityPresent(MainView.class));
- }
- }
總結
Zinc30是全面支援PageFactory模式的(可以參考:http://chon.techliminal.com/page_object/#/intro),因為它有3方面的優點:
1)減少重複程式碼,將頁面狀態的改變和遷移封裝在頁面物件之中;
2)UI的變動只會影響到相應頁面物件而不會影響到上層的test case;
3)能夠在不同的test case中重用頁面物件。
對於某些操作不在WebDriver的API中,比如滑動螢幕、點選Listview中的某一行或者返回上一頁等操作,我們在ActivityPage層直接zinc物件,它完全相容Robotium的所有動作。
相關推薦
Android UI 測試框架
Zinc30是一個強大的Android UI自動化測試框架,支援建立健壯、可維護的黑盒測試用例。RD或者QA能夠基於場景設計功能級和系統級測試。Zinc30符合Webdriver的 API規範,以更好地面向物件程式設計的方式來操作Android控制元件,同時全面支援Web
android單元測試框架Mockito使用
null 修改 分享 log hone 技術 pro 我們 ext 單元測試,早些年時常聽到這個概念,真的有去做的確實少,基本都是自己功能上的測試,開發完測試跑一邊沒啥問題就發布了。這幾天花了點心思看了下MockIto框架,記錄博文。 MockIto官網文檔在https:
Android UiAutomator測試框架
1. UiAutomator測試框架研究與實踐 1.1 UiAutomator 簡介: 它是一個Android自動化測試框架,是谷歌在Android4.1版本釋出時推出的一款用Java編寫的UI測試框架。它只能用於UI也就是黑盒方面的測試。所以UiAutomator只能執行在4.1以
Android自動化測試框架
Monkey Monkey1是Android SDK自帶的測試工具,是一個命令列工具,可以執行在模擬器裡或實際裝置中。可以執行在模擬器中或者實際裝置中,它向系統傳送偽隨機的使用者事件流(如按鍵輸入,觸控式螢幕輸入,手勢輸入等),實現對正在開發的應用程式進行壓力測
Android UI 開源框架ImageLoader的完美例子
Android開源框架ImageLoader的完美例子2013年8月19日開源框架之Universal_Image_Loader學習很多人都在討論如何讓圖片能在非同步載入更加流暢,可以顯示大量圖片,在拖動ListView的時候不會出現卡的現象。關於ImageLoader這個開源
Android自動化測試框架Robotium
目前用於Android的測試框架已經有很多,比如:Monkey、Appium和Robotium等。Monkey這是大家比較熟悉的,Android自帶的系統工具。Monkey通過向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開
Android UI註解框架 ButterKnife原始碼及原理分析
很開心,今天看到了一篇大神寫的部落格,對ButterKnife進行原始碼原理分析!看完之後學習到了很多新的知識,有關於自動生成程式碼的原理,以後有機會要自己寫一個註解框架!哈哈,如果能力夠的話! 簡單介紹一下 ButterKnife是一個很不錯的View
各種Android UI開源框架
目錄 具體內容 ============================= UI Awesome-MaterialDesign - MaterialDesignCenter改名為Awesome-MaterialDesign,優
Android UI-開源框架ImageLoader的完美例子
Android開源框架ImageLoader的完美例子2013年8月19日開源框架之Universal_Image_Loader學習很多人都在討論如何讓圖片能在非同步載入更加流暢,可以顯示大量圖片,在拖動ListView的時候不會出現卡的現象。關於ImageLoader這個開
Android自動化測試框架Espresso(二)——測試Toast彈出內容
Android中的Toast是我們經常會使用的,能夠方便的在介面上彈出一個提示語句,還可以控制顯示的時長,十分方便。使用Espresso測試Toast的彈出內容不是很好操作,主要由於Toast的佈局並不是屬於我們當前應用的,而是通過另一個Sevice控制的,這個原理可以看看
Android自動化測試框架開發(三)Instrumentation測試框架
本篇開始將介紹幾個重量級的測試框架,首先介紹的是Android最早推出的便於進行程式深入的,系統性的單元測試的框架–Instrumentation。 Instrumentation從android2.3甚至更早版本就存在了,很多Android自動化測試框架都是
Android自動化測試框架新書:交流
大家覺得編寫一本描述MonkeyRunner原理分析的書籍如何?估計大概10萬字左右。內容大概分佈如下: Monkey實現原理: 去描述執行在目標安卓機器的monkey是如何執行並處理MonkeyR
Android相容性測試框架(CTS)手冊
本文翻譯自Android官方的CTS手冊android-cts-manual-r4.pdfAndroid相容性測試框架手冊1、為什麼需要相容性測試(以下稱CTS)?1.1、讓APP提供更好的使用者體驗。使用者可以選擇更多的適合自己裝置的APP。讓APP更穩定。1.2、讓開發者
android常用自動化測試框架
window 自動 瀏覽器 資料 對比 移動 ppi des 選擇 目錄: Monkey MonkeyRunner Instrumentation UiAutomator Espresso Selendroid Robotium Athrun Appi
python專項測試——Android App自動化測試框架
selenium sdk str ase val 測試環境 self ron app自動化 1 為什麽需要框架? 代碼混亂,難閱讀; 重復編碼,效率低;需求變化,難維護; 一 自動化實例 1 準備測試的app;準備測試環境;實現腳本; 2 測試app:只有登錄功能
Android 輪播UI效果框架
Android 好用的框架與UI效果demo收集 1.萬能的公告欄輪播 View :BulletinView github https://github.com/Bakumon/BulletinView 2. RecyclerBanner 一個使用Rec
Android自動化測試實戰(Java篇+主流工具+框架+指令碼)
第1章 課程簡介 我們為什麼要學自動化測試?如果你現在開啟一家招聘網站,輸入自動化測試,不難發現,自動化測試已經成為了軟體測試領域的大趨勢,測試人員能力的分水嶺,高薪福利的必爭地。但每個公司招聘要求中,技能點要求那麼多,我們如何進行系統的學習,成為一名合格的自動化測試工程師呢? 在這門課程將... 1-1 課
Android單元測試(一):JUnit框架的使用
1.前言 網上有許多關於單元測試的好處,這裡我就不去說了。我寫單元測試的理由很簡單粗暴,就是圖一個方便。試想一下這個場景:我們在寫一個新功能,每寫一部分,我們就安裝到手機上檢視一下,這個過程中你要點選到對應的頁面,做對應的操作,最後才能反饋給你結果。如果達到了預
在Android Studio中進行UI測試
一、build.gradle 中配置 在defaultConfig中新增 testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” 在dependenc
基於APPIUM測試微信公眾號的UI自動化測試框架(結合Allure2測試報告框架)
clas ava sed rom pos enabled via 代碼管理 ons 框架初衷 前兩周組內的小夥伴跟我說她現在測試的微信公眾號項目(保險)每次上新產品時測試起來很費時,存在大量的重復操作(點點點),手工測試每個產品可能需要半天到一天的時間,復雜的產品需要兩