課程咨詢(xun): 400-996-5531 / 投(tou)訴(su)建(jian)議: 400-111-8989
認(ren)真(zhen)做教育 專心促就業
已經(jing)在Android SDK中(zhong)學(xue)習了很多關于(yu)JUnit的(de)內容(rong),但是感覺一直有(you)(you)幾個問(wen)(wen)題(ti)沒有(you)(you)解決(不知道大家是否(fou)有(you)(you)同樣(yang)的(de)感受)JUnit的(de)測試都(dou)自動化的(de),完全是不需要(yao)任何 操作(zuo)的(de),有(you)(you)2個問(wen)(wen)題(ti)我一直都(dou)還沒有(you)(you)找(zhao)到(dao)答案,這2個問(wen)(wen)題(ti)如下:
JUnit可(ke)以(yi)(yi)用(yong)來測試Android的基本(ben)組成元(yuan)素:Activity、Service、Provider,那(nei)么(me)我們如何(he)控制這些基本(ben)元(yuan)素運行 的,這需要(yao)Android系統(tong)提供一些底層操作的接口才(cai)可(ke)以(yi)(yi)做到。
如何模擬界面操作(zuo),比如說(shuo):單(dan)擊界面上的(de)按鈕、選(xuan)擇菜單(dan)等。
對于(yu)第(di)二個問(wen)題(ti),我(wo)在Cview中似乎(hu)找到了(le)答案,Cview中提供一些(xie)界面操作的函數,例如(ru):performClick(),看來Android SDK還是提供了(le)一些(xie)這方面的函數來模擬各種操作。對于(yu)第(di)一個問(wen)題(ti),本(ben)篇對這個問(wen)題(ti)幅詳細說明下(xia)。
首先(xian)我(wo)(wo)們(men)先(xian)想(xiang)下,如果要實(shi)現(xian)對(dui)Activity的(de)(de)(de)測(ce)試(shi)需(xu)要些什么?首先(xian)需(xu)要創(chuang)建Activity(這(zhe)個(ge)Android SDK中(zhong)已(yi)經提(ti)供了),然后可(ke)以控制Activity的(de)(de)(de)生(sheng)命周(zhou)期,這(zhe)些是(shi)最基本的(de)(de)(de)。在Android SDK中(zhong)說明過(guo)Activity的(de)(de)(de)創(chuang)建是(shi)異步的(de)(de)(de),也(ye)就(jiu)是(shi)說當我(wo)(wo)們(men)調(diao)用startActivty()后,這(zhe)個(ge)函數(shu)立(li)刻(ke)返回,而不是(shi)等待Activity創(chuang)建 好后才返回,這(zhe)就(jiu)需(xu)要一些同步方(fang)面(mian)(mian)的(de)(de)(de)操作。將前(qian)面(mian)(mian)的(de)(de)(de)概括起來就(jiu)是(shi)2個(ge)方(fang)面(mian)(mian):控制Activity的(de)(de)(de)生(sheng)命周(zhou)期與同步方(fang)面(mian)(mian)的(de)(de)(de)問題。Android SDK為我(wo)(wo)們(men)提(ti)供了 instrument,在android.test包中(zhong)InstrumentationTestCase 類有(you)個(ge)函數(shu)getInstrumentation()以及(ji)通過(guo)adb shell am instrument啟動測(ce)試(shi)例子的(de)(de)(de)方(fang)法中(zhong),都(dou)提(ti)到了instrument,下面(mian)(mian)就(jiu)對(dui)instrumentation詳細說明。
什么是Instrumentation?
Instrumentation是執行(xing)(xing)application instrumentation代碼(ma)的基類。當(dang)應(ying)用(yong)程(cheng)(cheng)序(xu)運行(xing)(xing)的時候instrumentation處于開啟,Instrumentation將在任(ren)何應(ying)用(yong) 程(cheng)(cheng)序(xu)運行(xing)(xing)前初始化,可以通過它監(jian)測系統與應(ying)用(yong)程(cheng)(cheng)序(xu)之(zhi)間的交(jiao)互。Instrumentation implementation通過的AndroidManifest.xml中的標簽(qian)進(jin)行(xing)(xing)描述。
Instrumentation似乎有些類似與(yu)window中的“鉤子(Hook)函數(shu)”,在系統與(yu)應(ying)用程序之間(jian)安(an)裝了(le)個“竊(qie)聽器”。
【免責聲明】本(ben)文部分系轉載,轉載目的在(zai)于傳遞更多信息,并不(bu)代(dai)表本(ben)網贊同其(qi)(qi)觀點和對其(qi)(qi)真實性負責。如(ru)涉及作(zuo)品(pin)內容、版(ban)權(quan)和其(qi)(qi)它問題,請在(zai)30日內與(yu)聯(lian)系我們,我們會(hui)予以更改(gai)或刪除相關文章,以保證您的權(quan)益(yi)!