android單元測試框架_第1頁
android單元測試框架_第2頁
android單元測試框架_第3頁
android單元測試框架_第4頁
android單元測試框架_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

android單元測試框架第一頁,共27頁??焖偕鲜种改螶ava基礎(chǔ)知識(shí)知道如何使用Eclipse(調(diào)試工具、模擬器)Android系統(tǒng)基礎(chǔ)知識(shí)熟悉Android單元測試框架環(huán)境需求JDKEclipse(安裝ADT插件)AndroidSDKPS百度:在Windows下搭建Android開發(fā)環(huán)境第二頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項(xiàng)目實(shí)踐第三頁,共27頁。Android系統(tǒng)

1、完全使用Java語言編寫;2、運(yùn)行在AndroidDalvik虛擬機(jī)之上;3、它通過JavaJNI接口調(diào)用本地庫的接口。第四頁,共27頁。Android系統(tǒng)—四大組件

Activity:每個(gè)屏幕就是一個(gè)活動(dòng);通過意圖(Intent)對(duì)象激活;

完整生命周期:onCreate()到onDestroy()可見生命周期:onStart()到onStop()前景生命周期:onResume()到onPause()第五頁,共27頁。Android系統(tǒng)—四大組件

Service:

在后臺(tái)運(yùn)行,用于處理長時(shí)間任務(wù)而影響前臺(tái)用戶體驗(yàn)的組件;一個(gè)活動(dòng),可以啟動(dòng)后臺(tái)服務(wù),也可以綁定到一個(gè)后臺(tái)服務(wù);通過意圖(Intent)對(duì)象激活;AstartedserviceAboundservice第六頁,共27頁。Android系統(tǒng)—四大組件

BroadcastReceive廣播接收組件:廣播接收組件是用來響應(yīng)系統(tǒng)層面的廣播通知的組件;通過意圖(Intent)對(duì)象激活;生命周期:為從回調(diào)onReceive()方法開始到該方法返回結(jié)果后結(jié)束,大概10秒左右;ContentProvider內(nèi)容提供組件:用來管理應(yīng)用的可共享部分的數(shù)據(jù)。應(yīng)用可以將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)、SQLite數(shù)據(jù)庫、網(wǎng)絡(luò)或任何一個(gè)應(yīng)用可以訪問的永久存儲(chǔ)設(shè)備。第七頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項(xiàng)目實(shí)踐第八頁,共27頁。Junit與Android框架

junit測試類庫和android中單元測試類庫:Android測試環(huán)境的主要特征:可以訪問Android系統(tǒng)對(duì)象。Instrumentation框架可以控制和測試應(yīng)用程序。運(yùn)行單個(gè)test或testsuite的工具,帶或不帶Instrumentation。支持以Eclipse的ADT插件和命令行方式管理Test和Test工程。

在這些包中最為重要的是:

junit.framework、

android.test,其中前者是JUnit的核心包,后者是AndoidSDK在Junit.framework的基礎(chǔ)上擴(kuò)展出來的包(未實(shí)現(xiàn)參數(shù)化)。SDK功能說明junit.frameworkJUnit測試框架junit.runner實(shí)用工具類支持JUnit測試框架android.testAndroid對(duì)JUnit測試框架的擴(kuò)展包android.test.mockAndroid的一些輔助類第九頁,共27頁。Junit與Android框架

junit.framework:第十頁,共27頁。android.test包:第十一頁,共27頁。AndroidTestCase類

AndroidTestCase類

繼承自JUnit的TestCase,不能使用Instrumentation框架。但這些類包含訪問系統(tǒng)對(duì)象(如Context,最主要的功能是加載和訪問資源)的方法。使用Context,你可以瀏覽資源,文件,數(shù)據(jù)庫等等。基類是AndroidTestCase。子類有:ApplicationTestCase——測試整個(gè)應(yīng)用程序的類。它允許你注入一個(gè)模擬的Context到應(yīng)用程序中,在應(yīng)用程序啟動(dòng)之前初始化測試參數(shù),并在應(yīng)用程序結(jié)束之后銷毀之前檢查應(yīng)用程序。ProviderTestCase2——測試單個(gè)ContentProvider的類。因?yàn)樗笫褂肕ockContentResolver,并注入一個(gè)IsolatedContext,因此Provider的測試是與OS孤立的。ServiceTestCase——測試單個(gè)Service的類。你可以注入一個(gè)模擬的Context或模擬的Application(或者兩者),或者讓Android為你提供Context和MockApplication。第十二頁,共27頁。InstrumentationTestCase類

InstrumentationTestCase類繼承自JUnitTestCase類,并可以使用Instrumentation框架,用于測試Activity。使用Instrumentation,Android可以向程序發(fā)送事件來自動(dòng)進(jìn)行UI測試,并可以精確控制Activity的啟動(dòng),監(jiān)測Activity生命周期的狀態(tài)?;愂荌nstrumentationTestCase。它的所有子類都能發(fā)送按鍵或觸摸事件給UI。子類有:

ActivityTestCase——Activity測試類的基類。SingleLaunchActivityTestCase——測試單個(gè)Activity的類。它能觸發(fā)一次setup()和tearDown(),而不是每個(gè)方法調(diào)用時(shí)都觸發(fā)。如果你的測試方法都是針對(duì)同一個(gè)Activity的話,那就使用它吧。SyncBaseInstrumentation——測試ContentProvider同步性的類。它使用Instrumentation在啟動(dòng)測試同步性之前取消已經(jīng)存在的同步對(duì)象。ActivityUnitTestCase——對(duì)單個(gè)Activity進(jìn)行單一測試的類。使用它,你可以注入模擬的Context或Application,或者兩者。它用于對(duì)Activity進(jìn)行單元測試。不同于其它的Instrumentation類,這個(gè)測試類不能注入模擬的Intent。ActivityInstrumentationTestCase2——在正常的系統(tǒng)環(huán)境中測試單個(gè)Activity的類。你不能注入一個(gè)模擬的Context,但你可以注入一個(gè)模擬的Intent。另外,你還可以在UI線程(應(yīng)用程序的主線程)運(yùn)行測試方法,并且可以給應(yīng)用程序UI發(fā)送按鍵及觸摸事件。第十三頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項(xiàng)目實(shí)踐第十四頁,共27頁。Instrumentation

TestCase類

Android測試環(huán)境的核心是一個(gè)Instrumentation框架:運(yùn)行ActivityManager,使用Instrumentation框架啟動(dòng)和控制TestRunner;TestRunner反過來又使用Instrumentation來關(guān)閉任何主程序的實(shí)例;啟動(dòng)測試程序及主程序,在同一個(gè)進(jìn)程中;確保測試程序與主程序間的直接交互;第十五頁,共27頁。InstrumentationTestCase類

publicclassInstrumentation

TestCaseextends

TestCase

knownDirectSubclassesActivityTestCase,ProviderTestCase<T

extends

ContentProvider>,SingleLaunchActivityTestCase<T

extends

Activity>,SyncBaseInstrumentationknownIndirectSubclassesActivityInstrumentationTestCase<T

exends

Activity>,ActivityInstrumentationTestCase2<T

extends

Activity>,ActivityUnitTestCase<T

extends

Activity>AndroidDevelopers網(wǎng)址/intl/zh-cn/reference/android/test/ActivityInstrumentationTestCase.html第十六頁,共27頁。Instrumentation

TestCase類

PublicMethodsInstrumentationgetInstrumentation()得到當(dāng)前case的instrumentation對(duì)象voidinjectInstrumentation(Instrumentation

instrumentation)將instrumentation對(duì)象注入到當(dāng)前case中.該方法會(huì)在setup方法中被調(diào)用final<T

extends

Activity>TlaunchActivity(String

pkg,

Class<T>activityCls,

Bundle

extras)啟動(dòng)activityfinal<T

extends

Activity>TlaunchActivityWithIntent(String

pkg,

Class<T>activityCls,

Intent

intent)啟動(dòng)一個(gè)帶有特殊intent的activityvoidrunTestOnUiThread(Runnable

r)在UiThread線程中啟動(dòng)casevoidsendKeys(String

keysSequence)發(fā)送鍵盤事件,從字符串里提取事件的標(biāo)識(shí),每個(gè)事件以空格拼接voidsendKeys(int...keys)發(fā)送一系列的keycode值,代表一系列的鍵盤事件voidsendRepeatedKeys(int...keys)參數(shù)的形式為點(diǎn)擊的次數(shù)n,鍵盤事件keycode.例如(2,KEYCODE_MENU)按2次菜單鍵第十七頁,共27頁。InstrumentationTestCase類核心Code:啟動(dòng)待測應(yīng)用并打開待測的activity1.設(shè)置用戶名文本框具體輸入焦點(diǎn);2.因?yàn)檫@段代碼需要操作界面的控件,因此需要運(yùn)行在待測應(yīng)用的線程中,而不是測試用例的線程中;3.只需要將要在UI線程上執(zhí)行的代碼作為參數(shù)傳入runOnUiThread函數(shù)里就可以了,代碼塊是放在Runnable匿名對(duì)象的run()函數(shù)里輸入手機(jī)號(hào)碼輸入密碼hong123第十八頁,共27頁。Instrumentation

TestCase子類

--ActivityTestCase

publicabstractclassActivityTestCaseextends

InstrumentationTestCase

ProtectedMethodsActivity

getActivity()獲得Activity的值voidscrubClass(Class<?>testCaseClass)在tearDown方法執(zhí)行時(shí),調(diào)用一系列的TestCase接口,為了擦除一些類變量voidsetActivity(ActivitytestActivity)設(shè)置Activity值第十九頁,共27頁。InstrumentationTestCase子類

--ActivityUnitTestCase

publicabstractclassActivityUnitTestCase

extends

ActivityTestCase

通常用來測試單獨(dú)Activity,用于Activity的單元測試。在啟動(dòng)被測試的Activity之前,你可以Inject一個(gè)假的Context或是Application,使用這個(gè)Mock的Context中一個(gè)隔離環(huán)境中運(yùn)行被測試的Activity。在setUp中,創(chuàng)建了一個(gè)MockIntent對(duì)象mStartIntent用于測試Activity第二十頁,共27頁。InstrumentationTestCase子類

--ActivityUnitTestCase

PublicMethodsTgetActivity()intgetFinishedActivityRequest()得到finishActivity(int)中傳入的參數(shù)值。如果返回-1代表沒完成intgetRequestedOrientation()得到setRequestedOrientation(int)中傳入的值。

IntentgetStartedActivityIntent()得到startActivity(Intent)

or

startActivityForResult(Intent,int)中intent的值;intgetStartedActivityRequest()得到startActivityForResult(Intent,int)中的參數(shù)值booleanisFinishCalled()是否完成調(diào)用,若調(diào)用了

finish(),

finishFromChild(Activity),or

finishActivity(int)方法,該方法將收到通知voidsetActivityContext(Context

activityContext)設(shè)置上下文對(duì)象voidsetApplication(Application

application)設(shè)置Application對(duì)象第二十一頁,共27頁。InstrumentationTestCase子類

--ActivityInstrumentationTestCase2

publicabstractclassActivityInstrumentationTestCase2extends

ActivityTestCase通常用于多個(gè)Activity的功能測試,它使用正常的系統(tǒng)框架來運(yùn)行Activity(使用應(yīng)用程序本身),并使用正常系統(tǒng)Context(非Mock)來測試Activity的功能。允許你創(chuàng)建一些MockIntent用來測試Activity的響應(yīng)。*這種TestCase不允許使用Mock的Context和Application對(duì)象測試,也就是說你必須使用和應(yīng)用程序?qū)嶋H運(yùn)行的環(huán)境來測試。PublicMethodsTgetActivity()得到Activity對(duì)象voidsetActivityInitialTouchMode(booleaninitialTouchMode)設(shè)置觸摸模式開關(guān),在getActivity()之前調(diào)用;voidsetActivityIntent(Intent

i)設(shè)置intent對(duì)象,在getActivity()之前調(diào)用;第二十二頁,共27頁。InstrumentationTestCase子類

--ActivityInstrumentationTestCase2核心Code:關(guān)閉待測應(yīng)用的觸控模式,以便發(fā)送按鍵事件;這個(gè)操作必須在調(diào)用getActivity()之前調(diào)用啟動(dòng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論