成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Android自動(dòng)化測(cè)試-從入門到入門(1)Hello Testing!

baiy / 1595人閱讀

摘要:開始的開始最近在做上的自動(dòng)化測(cè)試,從最初的第三方自動(dòng)化測(cè)試框架到后來的,再到最終完成答疑君客戶端一些核心流程的自動(dòng)化測(cè)試,期間也是經(jīng)歷了各種大大小小的坑。

開始的開始

最近在做Android上的自動(dòng)化測(cè)試,從最初的第三方自動(dòng)化測(cè)試框架appium到后來的Android Support Testing Library,再到最終完成答疑君Android客戶端一些核心流程的自動(dòng)化測(cè)試,期間也是經(jīng)歷了各種大大小小的坑。這個(gè)系列的文章也是想通過描述整個(gè)探索道路來記錄一下整個(gè)Android自動(dòng)化測(cè)試的入門過程,同時(shí)也采用了我自己所喜歡的step by step的模式來介紹整個(gè)流程,以便大家可以很快地操作起來。
但是,在開始的開始,我認(rèn)為每一種語言或者特性可能在不同的環(huán)境中都有不同的實(shí)現(xiàn)方式,所以有必要在此貼上我的一些開發(fā)環(huán)境以作參考:
IDE: Android Studio
Android SDK: API Level 23
gradle version: 2.8
build tool version: 23.0.2
測(cè)試環(huán)境:真機(jī)(Nexus 6 with Android 6.0.1; MIUI phones若干)

入門之前

曾經(jīng)和gemini聊到機(jī)器人統(tǒng)治地球的問題(這好像是異教徒們的愿景orz...),后來想了想自動(dòng)化測(cè)試這個(gè)東西其實(shí)也是,讓機(jī)器去模仿人的行為,讓它自己去統(tǒng)治整個(gè)測(cè)試工作。既然是去模仿人的行為,那實(shí)際上也應(yīng)該認(rèn)為機(jī)器只能理解人所能理解的東西。比方說,當(dāng)我去人為地做一些測(cè)試的時(shí)候,我所期待的只是UI上的變化可以符合我的預(yù)期,至于它背后的數(shù)據(jù)是怎樣的實(shí)際上我并不care。因此,在做自動(dòng)化測(cè)試時(shí)我個(gè)人有個(gè)最基本的思路:

把自己當(dāng)成用戶,只關(guān)注我能看到的東西。
Start from Gradle

好了!終于可以開始了!既然是采用Gradle進(jìn)行Android工程的構(gòu)建,那自然是少不了Gradle的配置啦!根據(jù)Gradle官方文檔的說明,我們首先需要在我們工程的build.gradle中添加如下配置:

android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

這里實(shí)際上只做了一件事情,就是為我們的工程指定一個(gè)TestInstrumentationRunner,TestInstrumentationRunner是用來跑我們所寫的所有的測(cè)試用例的。當(dāng)我們采用test的模式來構(gòu)建工程時(shí),這個(gè)Runner便會(huì)自動(dòng)為我們執(zhí)行所有的的測(cè)試用例,并且返回相應(yīng)的測(cè)試結(jié)果。
另外,我們還需要在build.gradle中增加instrumentation testing所需要的依賴:

dependencies {
    androidTestCompile "com.android.support:support-annotations:23.1.1"
    androidTestCompile "com.android.support.test:runner:0.4.1"
    androidTestCompile "com.android.support.test:rules:0.4.1"
}
Where am I?

好了!我們現(xiàn)在有工具來跑測(cè)試了,接下來只要添加我們的測(cè)試用例了!于是問題來了,我們應(yīng)該在哪里添加測(cè)試用例呢?
如果你在Android Studio中新建一個(gè)工程,會(huì)發(fā)現(xiàn)在src目錄下,和main平行的還有一個(gè)androidTest目錄。一般而言,我們將工程代碼放在src/main/java目錄下,將與之相關(guān)的測(cè)試代碼放在src/androidTest/java目錄下。如下所示:

src/
    androidTest/java    ----這里存放instrumentation test相關(guān)的代碼
    main/java           ----這里存放工程代碼

同時(shí),為了讓工程更容易維護(hù),建議將相應(yīng)Class的測(cè)試代碼放到相同名稱的包下面,比如,在Package-name下面有一個(gè)Class A:

    src/main/java/package-name/A.java

那么,建議將A的測(cè)試類放到androidTest下面對(duì)應(yīng)的路徑下:

    src/androidTest/java/package-name/ATest.java
可以Say Hello了!

好了!我要開始變身了!下面我們要向testing的世界say hello了!
我在package-name/module/main包下面有一個(gè)AppStartActivity,作為答疑君的啟動(dòng)頁(yè)。在這個(gè)啟動(dòng)頁(yè)上會(huì)顯示一段文字,我希望通過自動(dòng)化測(cè)試來確認(rèn)這個(gè)文字確實(shí)顯示在了屏幕上。

于是,我應(yīng)該在androidTest/package-name/module/main下面創(chuàng)建一個(gè)AppStartActivityTest類,鍵入如下代碼:

package im.dayi.app.student.module.main;

import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Test for AppStartActivity
 * Created by Anchorer on 2016/1/13.
 */
@RunWith(AndroidJUnit4.class)
public class AppStartActivityTest extends ActivityInstrumentationTestCase2 {

    private AppStartActivity mActivity;
    private TextView mContentView;

    public AppStartActivityTest() {
        // 所有的ActivityInstrumentationTestCase2子類都需要調(diào)用該父類的super(String)構(gòu)造方法
        super(AppStartActivity.class);
    }

    @Before
    public void setUp() throws Exception {
        super.setUp();
        // @Before注解表示在執(zhí)行所有的testCase之前要做的事情
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());

        // getActivity()方法會(huì)在開始所有的testCase之前啟動(dòng)相應(yīng)的Activity
        mActivity = getActivity();
        // findViewById()很熟悉吧?找到我要測(cè)試的控件
        mContentView = (TextView) mActivity.findViewById(R.id.welcome_content);
    }

    @Test
    public void testPreconditions() {
        // @Test注解表示一個(gè)測(cè)試用例方法
        assertNotNull("AppStartActivity is null", mActivity);
    }

    @Test
    public void testContentDisplayed() {
        // 這里就是我們測(cè)試的目標(biāo),判斷目標(biāo)控件的text不為空
        String content = mContentView.getText().toString();
        assertNotNull("AppStartActivity Content is Null", content);
    }
}

相關(guān)代碼的說明請(qǐng)見注釋。

接下來,我要開始跑這個(gè)測(cè)試用例了。首先,打開Android Studio的Build variants窗口,將Test Artifact設(shè)為Android Instrumentation Tests,然后Synchronize一下工程,會(huì)看到androidTest路徑下的背景顏色變成了綠色。
此時(shí),在AppStartActivityTest.java點(diǎn)擊菜單,選擇Run "AppStartActivityTest...",就可以從控制臺(tái)看到測(cè)試已經(jīng)在跑了:

從控制臺(tái)的日志來看,整個(gè)測(cè)試過程初期,會(huì)向測(cè)試設(shè)備安裝兩個(gè)APK:APP APK和test APK。整個(gè)測(cè)試結(jié)束之后,會(huì)看到測(cè)試結(jié)果:

以上測(cè)試結(jié)果說明,所有test case全部測(cè)試通過。

好了!這就是整個(gè)自動(dòng)化測(cè)試的大體流程了!接下來我已經(jīng)迫不及待地想要把Android強(qiáng)大的自動(dòng)化測(cè)試提供的特性分享出來了??!

附錄

Android自動(dòng)化測(cè)試-從入門到入門(1) Hello Testing!
Android自動(dòng)化測(cè)試-從入門到入門(2) Testing APIs
Android自動(dòng)化測(cè)試-從入門到入門(3) Espresso入門
Android自動(dòng)化測(cè)試-從入門到入門(4) uiautomatorviewer
Android自動(dòng)化測(cè)試-從入門到入門(5) AdapterView的測(cè)試
Android自動(dòng)化測(cè)試-從入門到入門(6) 會(huì)玩的Espresso
Android自動(dòng)化測(cè)試-從入門到入門(7) UI Automator

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65387.html

相關(guān)文章

  • Android動(dòng)化測(cè)試-入門入門(2)Testing APIs

    摘要:標(biāo)識(shí)一個(gè)測(cè)試方法。附錄自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門入門自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門的測(cè)試自動(dòng)化測(cè)試從入門到入門會(huì)玩的自動(dòng)化測(cè)試從入門到入門 根據(jù)該系列文章的第一篇:Hello Testing,大家已經(jīng)對(duì)整個(gè)自動(dòng)化測(cè)試運(yùn)行流程有了一個(gè)基本的了解,接下來我們?cè)摷芯﹃P(guān)注具體的腳本實(shí)現(xiàn)了!在具體實(shí)現(xiàn)之前,我們先來了解一下Android提...

    Meathill 評(píng)論0 收藏0
  • Android動(dòng)化測(cè)試-入門入門(6)會(huì)玩的Espresso

    摘要:附錄自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門入門自動(dòng)化測(cè)試從入門到入門自動(dòng)化測(cè)試從入門到入門的測(cè)試自動(dòng)化測(cè)試從入門到入門會(huì)玩的自動(dòng)化測(cè)試從入門到入門 之前的文章中,我們介紹了Android自動(dòng)化測(cè)試的一些背景,以及Espresso的基本應(yīng)用。除了之前介紹過的Espresso的相關(guān)用法,Espresso還提供了一些其他的用法,可以讓我們?cè)诓煌瑘?chǎng)景下靈活使用。這篇...

    Aklman 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<