![android單元測試框架_第1頁](http://file4.renrendoc.com/view/c64b68ef6d92481cf3b62af06157cbc7/c64b68ef6d92481cf3b62af06157cbc71.gif)
![android單元測試框架_第2頁](http://file4.renrendoc.com/view/c64b68ef6d92481cf3b62af06157cbc7/c64b68ef6d92481cf3b62af06157cbc72.gif)
![android單元測試框架_第3頁](http://file4.renrendoc.com/view/c64b68ef6d92481cf3b62af06157cbc7/c64b68ef6d92481cf3b62af06157cbc73.gif)
![android單元測試框架_第4頁](http://file4.renrendoc.com/view/c64b68ef6d92481cf3b62af06157cbc7/c64b68ef6d92481cf3b62af06157cbc74.gif)
![android單元測試框架_第5頁](http://file4.renrendoc.com/view/c64b68ef6d92481cf3b62af06157cbc7/c64b68ef6d92481cf3b62af06157cbc75.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)生活化教學(xué)在小學(xué)科學(xué)教育中的角色
- 綜合實(shí)踐活動(dòng)在小學(xué)德育中的作用研究
- 電務(wù)段觸電傷害應(yīng)急預(yù)案
- 校園欺凌現(xiàn)象與法律應(yīng)對(duì)措施
- DB3715T 72-2025楊柳飛絮綜合防治技術(shù)規(guī)程
- 中外工程技術(shù)許可合同范例
- OEM技術(shù)合作合同(微機(jī)領(lǐng)域)
- 個(gè)人臨時(shí)借款合同范本
- 中外合資企業(yè)土地使用權(quán)轉(zhuǎn)讓協(xié)議合同
- 臨海市農(nóng)產(chǎn)品供需雙方種植收購合同
- 期末練習(xí)卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 2025年公務(wù)員考試申論試題與參考答案
- 2025年高考作文專練(25道真題+審題立意+范文)- 2025年高考語文作文備考總復(fù)習(xí)
- 中國高血壓防治指南(2024年修訂版)要點(diǎn)解讀
- 二十屆三中全會(huì)精神應(yīng)知應(yīng)會(huì)知識(shí)測試30題(附答案)
- 小學(xué)三年級(jí)下冊(cè)奧數(shù)題100道附答案
- 《烏有先生歷險(xiǎn)記》原文及翻譯
- 人員測評(píng)方案
- 小升初卷(試題)-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)人教版
- GB/T 40565.1-2024液壓傳動(dòng)連接快換接頭第1部分:通用型
評(píng)論
0/150
提交評(píng)論