91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Android UI測試框架zinc30

發布時間:2021-11-26 11:35:24 來源:億速云 閱讀:177 作者:柒染 欄目:移動開發

如何理解Android UI測試框架zinc30,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Zinc30是一個強大的Android  UI自動化測試框架,支持建立健壯、可維護的黑盒測試用例。RD或者QA能夠基于場景設計功能級和系統級測試。Zinc30符合Webdriver的  API規范,以更好地面向對象編程的方式來操作Android控件,同時全面支持Web UI測試中流行的PageFactory模式。

項目地址:https://code.google.com/p/zinc30/

GettingStart

使 用Zinc30需要將zinc.jar包放入Android Test Project中并加入到build  path之中,同時需要在AndroidManifest.xml的manifest元素下加入:

對于使用Zinc30的示例項目請在downloads區下載  zinc30-sample.zip包,里面包含兩個項目,zinc30-sample是被測項目,采用mvp模式書寫;zinc30-sample-  test是測試項目,采用PageFactory模式來書寫測試用例。兩個項目導入到eclipse即可直接運行。

示例演示

這里以測試登陸功能為例,假如有兩個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);         }  }

可以看到,這個Page頁面主要包括測試過程中需要操作的元素以及動作,其中元素查找有3個方法:

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 {          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));         } }

我們寫測試用例的時候需要繼承ZincTestCase,它主要完成zinc對象的初始化。雖然在Test Case這層可以使用zinc對象,但我們鼓勵將操作封裝在ActivityPage層。

Zinc30是全面支持PageFactory模式的,因為它有3方面的優點:

1)減少重復代碼,將頁面狀態的改變和遷移封裝在頁面對象之中;

2)UI的變動只會影響到相應頁面對象而不會影響到上層的test case;

3)能夠在不同的test case中重用頁面對象。

對于某些操作不在WebDriver的API中,比如滑動屏幕、點擊Listview中的某一行或者返回上一頁等操作,我們在ActivityPage層直接zinc對象,它完全兼容Robotium的所有動作。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

堆龙德庆县| 阿勒泰市| 海口市| 中超| 长泰县| 年辖:市辖区| 明水县| 启东市| 报价| 桂东县| 临汾市| 麻城市| 海盐县| 广汉市| 介休市| 仁寿县| 镇坪县| 衡水市| 洪江市| 绿春县| 子长县| 元朗区| 海淀区| 顺平县| 三都| 永宁县| 乌鲁木齐县| 张家口市| 房产| 曲靖市| 防城港市| 宜春市| 松原市| 银川市| 龙岩市| 时尚| 团风县| 金坛市| 宁明县| 宣城市| 长顺县|