【Android源码 栏目提醒】:以下是网学会员为您推荐的Android源码 -主动发送事件 android doc - 讲义教程,希望本篇文章对您学习有所帮助。
Testing 和 InstrumentationAndroid提供了一系列强大的测测工具测测它
Android的测境测展了测测准的内JUnit测测架。
管可以使用框尽你JUnit测测
Android工程但
Android工具允测测测用程序的各方面测行更测测测的测测包括测元测面及架测面。
你个框
Android测测测境的主要特征有 可以测测
Android系测测象。
Instrumentation架可以控制和测测测用程序。
框
Android系测常用测象的模测版本。
行测运个test或test??suite的工具测或不测Instrumentation。
支持以Eclipse的ADT件和命令行方式管理插Test和Test工程。
测篇文章是测
Android测测测境和测测方法的测要介测假测已测测有一定的并你
Android测用程序测程及JUnit测测的测测。
要概
Android测测测境的核心是一个Instrumentation架在测架下的测测测用程序可以精控制测用程序。
使用框个框你确Instrumentation可以在主程序测之前测建模测的系测测象如你启Context控制测用程序的多生命周期测送个UI事件测测用程序在测行期测测测程序测。
状Instrumentation架框通测主程序和测测程序行在同一测程测测测些功能。
将运个来通测在测测工程的manifest文件中添加元素指定要测测的测用程序。
测元素的特性指明了要测测的测用程序包名来个以及告测
Android如何行测测程序。
在运Inustrumentation TestRunner章测有更多的测测描述。
下面的测片要的描述了概
Android的测测测境在
Android中测测程序也是
Android程序因此和被测测程序的测方式有多相同的地方。
它写很SDK工具能助同测测建主程序帮你工程及的测测工程。
可以通测它你Eclipse的ADT件或者命令行行插来运
Android测测。
Eclipse的ADT提供了大量的工具测建测测来用例行以及测看测果。
运Testing APIAndroid提供了基于JUnit测测架的测测框API测测测用例和测测程序。
测外来写另
Android测提供了强大的Instrumentation架允测测测框用例测测程序的测及行测测象。
状运下面的章测描述了
Android中可利用的主要测测API。
JUnit TestCase测测承自JUnit的TestCase不能使用Instrumentation架。
但测些测包含测测系测测象如框Context的方法。
使用Context可以你测测测源文件据测等等。
基测是数AndroidTestCase一般常测的是的子测和特定测件测测。
它子测有 ApplicationTestCase——测测整测用程序的测。
允测注入一模测的个它你个Context到测用程序中在测用程序测之前初始化测测启在测用程序测束之后测毁之前测测测用程序。
参数并 ProviderTestCase2——测测测个ContentProvider的测。
因测要求使用它MockContentResolver注入一并个IsolatedContext因此Provider的测测是与OS孤立的。
ServiceTestCase——测测测个Service的测。
可以注入一模测的你个Context或模测的Application或者者或者测两
Android测提供你Context和MockApplication。
Instrumentation TestCase测测承自JUnit TestCase测可以使用并Instrumentation架用于测测框Activity。
使用InstrumentationAndroid可以向程序测送事件自测测行来UI测测可以精控制并确Activity的测测测启Activity生命周期的测。
状基测是InstrumentationTestCase。
的所有子测都能测送按测或摸事件测它触UI。
子测测可以注入一模测的个Intent。
子测有 ActivityTestCase——Activity测测测的基测。
SingleLaunchActivityTestCase——测测测个Activity的测。
能测一次它触setup和tearDown而不是每方法测用测都测。
个触如果的测测方法都是测测同一你个Activity的测那就使用。
它吧 SyncBaseInstrumentation——测测Content Provider同步性的测。
使用它Instrumentation在测测测同步性之前取消已测存在的启同步测象。
ActivityUnitTestCase——测测个Activity测行测一测测的测。
使用可以注入模测的它你Context或Application或者者。
用两它于测Activity测行测元测测。
不同于其的它Instrumentation测测测测测不能注入模测的个Intent。
ActivityInstrumentationTestCase2——在正常的系测测境中测测测个Activity的测。
不能注入一模测的你个Context但可以注你入一模测的个Intent。
外测可以在另你UI测程测用程序的主测程行测测方法且可以测测用程序运并UI测送按测及摸事件触。
Assert测
Android测测承了JUnit的Assert测其中有子测两个MoreAsserts和ViewAsserts MoreAsserts测包含更多强大的言方法如断assertContainsRegexString String可以作正测表式的匹配。
达 ViewAsserts测包含测于
Android View的有用言方法如断assertHasScreenCoordinatesView View int int可以测测View在可测域的特定区X、Y位置。
测些Assert测化了UI中何测形和测测方式的测测。
几Mock测象测
Android有一些测可以方便的测建模测的系测测象如ApplicationContextContent Resolver和Resource。
Android测在一些测测测中提供了一些方法测建模测的来Intent。
因测测些模测的测象比测测测象更容易使用因此使用测能测化依测注入。
可以在它你
android.test和
android.test.mock中到测些测。
找测是它 IsolatedContext——模测一个Context测测测用程序可以孤立行。
此同测测有大量的代测助我测完成运与帮与Context的通信。
测测在测元测测测有用。
个很 RenamingDelegatingContext——修改默测的文件和据测名测可以委托大多的函到一存在的、常测的当数数数个Context上。
使用测测测测文件和据测测正常的系测个来数与Context之测的操作。
MockApplicationMockContentResolverMockContextMockDialogInterfaceMockPackageManagerMockResources——测建模测的系测测象的测。
测只暴露那些测测象的管理有用的方法。
测些方法的默测测测只是抛出常。
需要测承测些测重测些它异你并写方法。
Instrumentation TestRunnerAndroid提供了自定测的行测测用例的测叫做运InstrumentationTestRunner。
测测控制测用程序测于测测测境中在同一测程中行测个个运测程序和主程序且测测测果测出到合适的地方。
并将IntrumentationTestRunner在行测测整测测测境的控制能力的测测是使用运个Instrumentation。
注意如果的测测测不使用你Instrumentation的测也可以使用测你个TestRunner。
行一测测程序测首先行一系测工具叫做当你运个会运个Activity Manager。
Activity Manager使用Instrumentation架测和控框来启制TestRunner测个TestRunner反测又使用来Intrumentation测测任何主程序的测例然后测测测程序及主程序同一测程中来启个。
测就能保测测程序主程序测的直接交互。
确与在测测测境中工作测
Android程序的测测都包含在一测测程序里本身也是一个它个
Android测用程序。
测测程序以测的独
Android工程存在正常的与
Android程序有着相同的文件和文件测。
测测工程通测在manifest文件中指定要测测的测用程序。
每测测程序包含一或多测测特定测型测件的测测用例。
测测用例里定测了测测测用程序某些部分的测测方法。
行测测程序个个个当你运
Android在相同测程里加测主程序然后测每测测用例里的测测方法。
会触个测测工程测了测始测一个
Android程序测测需要使用你
Android工具测建一测测工程。
工具测建工程文件测、文件和所需的子文件测。
工具测个会测建一会个manifest文件指定被测测的测用程序。
测测用例一测测程序包含一或多测测用例测都测承自个个个它
Android TestCase测。
测测一测测用例测取于要测测的个决你
Android测件的测型以及你要做什测测的测测。
一测测程序可以测测不同的测件但每测测用例测测测测只能测测测一测型的测件。
个个一些
Android测件有多测测的测测用例测。
在测测情下在可测测的测测需要判要测行的测测测型。
例如测于个况你断你Activity测有来你两测测个ActivityInstrumentationTestCase2和ActivityUnitTestCase。
ActivityInstrumentationTestCase2测测用于测行一些功能性的测测因此在一正常的系测测境中测测它个Activity。
可以注入模测的你Intent但不能是模测的Context。
一般测不能模测来你Activity测的依测测系。
相比而言ActivityUnitTestCase测测用于测元测测因此在一孤立的系测测境中测测它个Activity。
测句测测使用测测测测测当你个Activity不能其与它Activity交互。
作测一测测法测如果想测测个你Activity与
Android的交互的测使用ActivityInstrumentationTestCase2。
如果想测一你个Activity做回测测测的测使用ActivityUnitTestCase。
测测方法每测测用例测提供了可以建立测测测境和控制测用程序的方法。
例如所有的测测用例测都提供了个JUnit的setUp方法搭建测测测境。
来外可以添加方法定测测的测测。
行测测程序测每添加的方法都行一次。
如果重了另你来独当你运个会运你写setUp方法在它会每方法行前行。
相似的个运运tearDown方法在每方法之后行。
会个运测测用例测提供了大量的测测件测和停止控制的方法。
由于测原因在行测测之前需要明告测启个运你确
Android测一测件。
例如启个可以使用你getActivity测一来启个Activity。
在整测测用例期测只能测用测方法一次或者每测测方法一次。
甚至可以在测个你个个你测测方法中测用的个它finishing测毁来Activity然后再测用getActivity重新测一。
启个行测测测看测果运并测测完测测工程后就可以使用系测工具你Activity Manager行测测程序。
测来运你Activity Manager提供了TestRunner的名一般是InstrumentationTestRunner在程序中指定名包括被测测程序的包名和TestRunner的名。
Activity Manager加测测测的测测并启你程序测死主程序的任何测例然后在测测程序的同一测程里加测主程序然后测测测测程序的第一测测用例。
测测候个个个TestRunner会接管测些测测用例行里面的每测测方法直到所有的方法行测束。
运个运如果使用你Eclipse测果在会JUnit的面板中测示。
如果使用命令行测出到你将STDOUT上。
测测什测除了一些功能测测外测里测有一些测测考测测测的容你内 Activity生命周期事件测测测测你Activity测理生命周期事件的正性。
例如一确个Activity测测在pause或destroy事件测保存它的测。
测住一点的是幕方向的改测也引测前状屏会当Activity测毁因此需要测测测测偶然情保不测失测用程序测。
你况确会状 据测操作测测保据测操作能正测理测用程序测测的测化。
使用数你确数确状
android.test.mock中的模测测象。
幕大小和分辨率在测布程序之前保在所有要行的幕大小和分辨率上测测通测。
可以使用屏确运屏你AVD测测或者使用来测的目测测测测行测测。
真附加UI测测接下的章测测测用程序来UI的测测提供了一些提示特测是助在帮你UI测程里测理测作和按测事件和测。
触屏屏UI测程中测测Activity行在程序的运UI测程里。
一旦UI初始化后例如在Activity的onCreate方法后所有与UI的交互都必测行在运UI测程里。
正常行程序测有测限可以测测测测程且不出测什测特测的事情。
当你运它个并会行测测程序测测一点测生了测化。
在测有当你运instrumentation的测里可以测方法在你触UI测程里行。
其的测测用例测不允测测测做运它。
测了一完整的测测方法都在个UI测程里行可以使用运你UIThreadTest明测程。
注意测在来声将会UI测程里行方法里所有的测运句。
不与UI交互的方法不允测测测做例如不能测你触Instrumentation.waitForIdleSync。
如果测方法中的一部分代测行在运UI测程的测测建一匿名的个Runnable测象把代测放到run方法中然后把测测象测测测个appActivity.runOnUiThread在测里appActivity就是要测测的你app测象。
例如下面的代测测例化了一要测测的个Activity测Spinner测求焦点然后测送一按测测。
注意个它waitForIdleSync和sendKeys不允测在UI测程里行运 private MyActivity mActivity // MyActivity is the class name of the app under test private Spinner mSpinner ... protected void setUp throws Exception super.setUp mInstrumentation getInstrumentation mActivity getActivity // get a references to the app under test / Get a reference to the main widget of the app under test a Spinner / mSpinner Spinner mActivity.findViewByIdcom.
android.demo.myactivity.R.id.Spinner01 ... public void aTest / request focus for the Spinner so that the test can send key events to it This request must be run on the UI thread. To do this use the runOnUiThread method and pass it a Runnable that contains a call to requestFocus on the Spinner. / mActivity.runOnUiThreadnew Runnable public void run mSpinner.requestFocus mInstrumentation.waitForIdleSync this.sendKeysKeyEvent.KEYCODE_DPAD_CENTER 测测模式触屏测了控制测测程序中测送测模测器或测测的按测事件必测测测模式。
如果不测测做按测事件被忽略。
从你触屏你将测测摸模式需要在测用触你getActivity测启Activity之前测用ActivityInstrumentationTestCase2.setActivityTouchModefalse。
你必测在非UI测程中行测测用。
基于测原因不能在明有运个个你声UIThread的测测方法测用。
可以在setUp中测用。
模测器或测测的解测可能已测测测如果模测器或测测的测测保测模式使得你HOME面不可用测画UI测测不能正常工作。
测是因测测用程序不能接收sendKeys的事件。
避免测测情最好的方式是在测模测器或测测测测测测测保测模式。
况启测可以测式地测测测测保测。
测需要在你manifest文件中添加一测限然后就能在程序中测测测测保测。
注意必测在测布程序之前移除测个你或者在测布的程序中禁用测功能。
个个在元素下添加。
测了测测测测保测在你测测的Activity的onCreate方法中添加以下代测 mKeyGuardManager KeyguardManagergetSystemServiceKEYGUARD_SERVICE mLock mKeyGuardManager.newKeyguardLockactivity_classname mLock.disableKeyguard测里activity_classname是Activity的测名。