Android测试教程(全)_第1页
Android测试教程(全)_第2页
Android测试教程(全)_第3页
Android测试教程(全)_第4页
Android测试教程(全)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android测试教程目录Android测试教程1Android测试教程(1):概述1Android测试教程(2):测试基础2Android测试教程(3):测试项目3Android测试教程(4):测试相关API6Android测试教程(5):第一个测试项目HelloWorldTest8Android测试教程(6):测试Activity11Android测试教程(7):测试Content Provider12Android测试教程(8):测试Service13Android测试教程(9):ApplicationTestCase示例13Android测试教程(10):ActivityInstrum

2、entationTestCase2示例17Android测试教程(11):ActivityUnitTestCase示例18Android测试教程(12):ServiceTestCase示例20Android测试教程(13):TestCase示例22Android测试教程(14):ActivityInstrumentationTestCase2示例23Android测试教程(15):AndroidTestCase示例25Android测试教程(16):monkeyrunner简介27Android测试教程(17):Monkey 命令行工具28Android测试教程(18):总结32来源:

3、0;csdn   作者:mapdigit Android测试教程(1):概述测试也是开发过程中一个重要组成部分,Android开发环境集成一个测试框架可以用来测试Android应用的各个方面,单元测试,UI测试等。本教程基于Android 开发教程英文版。基本概念包括· Android测试的基础知识· Activity Testing 侧重于Activity的测试,介绍了如果使用Instrumentation 在正常Activity生命周期之外来控制Activity,然后测试Activity的特定的功能和测试UI的一些技巧。· Con

4、tent Provider Testing 侧重测试Content Provider。· Service Testing 侧重测试Service。· 需要测试的内容等。以及在Eclipse ADT开发环境下如何创建一个测试项目和Android开发工具提供的一些测试工具。在阅读本测试教程之前,你需要有Android开发的一些基本知识,可以参见Android开发教程 ,此外需要了解一些JUnit的基本概念 。并对ApiDemo中的测试示例进行解析。Android测试教程(2):测试基础Android测试框架(Android Testing Framework)为And

5、roid开发环境的一个组成部分,可以用来测试Android的各个方面,从单元测试到框架测试到UI测试等。其主要功能有:· Android测试框架基于JUnit,因此可以直接使用JUnit 来测试一些与Android平台不是很相关的类,或者使用Android的JUint 扩展来测试Android组件,如果你刚开始接触Android 测试,可以先从AndroidTestCase写一些通用的测试用例,然后再写较复杂的测试用例。· Android JUint 扩展提供了对Android特定组件(如Activity,Service)的测试支持,这些扩展类提供了一些辅助方法来帮助创建测

6、试使用的“桩”类或方法。· 创建的测试包包含中一个测试包中,这个测试包和主应用程序包具有类似的结构,创建测试包的步骤和创建Android应用的方法基本类似。· Eclipse的ADT包含了创建测试用例的SDK工具,并提供用于和其它IDE集成的命令行工具。这些工具可以从被测试的应用程序包读取所需信息用于创建测试项目的build 文件,mainfest 文件和文件目录结构等。· SDK也提供了一个moneyrunner (一个python应用)可以模拟用户按键事件来测试UI。下图为Android测试框架的一个总结:Android测试教程(3):测试项目Android的

7、编译和测试工具需要测试项目组织符合预订的结构:分别为Test case 类,Test case 包以及测试项目。JUnit 为Android的测试的基础,一般来说,一个JUint测试为一个用来测试一个应用某一部分的语句。 你可以将多个测试Test方法组织起来构成一个测试用例(Test case),多个测试用例可以构成Test Suites 。 每个Test方法相对独立,一个测试类Test class包含一组相关的Test 或其它辅助方法。在Android平台上,你可以使用测试工具调入Test Package和所要测试的应用,然后执行Test Runner来运行测试用例。使用Eclipse AD

8、T 工具创建测试项目的方法:1. 在创建应用的同时创建测试项目,如下图选中Create a Test Project ,ADT自动为应用创建对应的测试项目2. 导入已有的测试项目,并和被测试的应用关联。Android SDK 自带ApiDemo,并带有其对应的测试项目ApiDemos->Test. 打开ApiDemos->Test 的方法如下,首先是选中Build Target (比如Android 2.2),然后选择Create project from existing sample, 从下拉列表中选择ApiDemos ->Tests (注意你要先创建ApiDemosAn

9、droid ApiDemos示例解析(1):创建ApiDemo示例)将ApiDemos->tests 和ApiDemos 关联起来:修改ApiDemos->tests 测试项目的属性,在Java Build Path 的项目Projects 中添加ApiDemos你最好使Eclipse 工具创建测试项目:· 自动为你的测试项目设置使用InstrumentationTestRunner 作为运行Test Package的Test Runner,测试项目必须使用InstrumentationTestRunner 或其子类做为Test Package的runner.·

10、 为测试项目创建合适的项目名称和测试包名称,比如你需要测试的应用的包名称为com.mydomain.myapp 则自动创建的测试包名为com.mydomain.myapp.test ,从测试包名可以很容易找到对应的应用程序包名称。· 自动创建合适的build 文件,mainifest 文件和文件目录结构。建议使用的文件目录结构可以如下所示:MyProject/AndroidManifest.xmlres/ (resources for main application)src/ (source code for main application) tests/-AndroidMani

11、fest.xml-res/- (resources for tests)-src/- (source code for tests)Android测试教程(4):测试相关APIAndroid的测试框架相关的API主要定义在三个包中:· android.test 用于编写Android测试用例· android.test.mock 定义了方便测试用的测试“桩”类· android.test.suitebuilder 运行测试用例的Test Runner类Android 测试API 是基于JUnit 扩展而来,并添加了与Android平台相关的测试API。JUnit你

12、可以直接使用JUnit中相关API编写一些和平台无关的测试用例(基于TestCase), Android 测试API中提供了一个TestCase的子类AndroidTestCase ,可以用来编写一些Android相关的对象的测试用例,AndroidTestCase 支持一些和平台相关的setup,teardown 以及setup 方法。你也可以直接使用JUnit 的Assert 方法 显示测试结果,这些Assert方法可以通过比较预期的值和实际的值,如果不同可以排除异常。Android 测试API扩展了一些Assert方法用于支持和Android平台相关的比较。要注意的是,Android 测

13、试API支持JUnit 3 代码风格,而不支持JUnit 4 代码风格,也只能使用InstrumentationTestRunner 来运行测试用例。InstrumentationAndroid 的Instrumentation 提供了一些“钩子”方法连接到Android操作系统中,可以独立控制Android组件(Activity,Service等)的生命周期,并可以控制Android如何调用一个应用。在通常情况下(普通的Android应用),Android的activity,Service等的生命周期是由Android操作系统来控制的。 比如一个Activity 的生命周期开始于onCrea

14、te (由某个Intent激活),然后是onResume. 可以参见Android简明开发教程五:Activities。 应用程序本身无法直接控制这些生命周期状态的切换。但使用Instrumatation API时你可以直接调用这些方法。Instrumentation API 也可以支持强制某个应用和另一个已经在运作的应用运行在同一个进程中,这在通常的情况下是不可能实现的。使用Instrumentation API 你可以直接调用Activity或是Service的生命周期回调函数,从而可以让你运行一步一步的运行Activity或是Service的生命周期函数。如下例显示了如何使用Instru

15、mentation API来测试Activity 保持和恢复State。/ Start the main activity of the     / application under test     mActivity = getActivity();                / Get a handle to the Activity object'

16、;s     /main UI widget, a Spinner     mSpinner     = (Spinner)mActivity      .findViewById(com.android.example.spinner.R.id.Spinner01);              &

17、#160; / Set the Spinner to a known position     mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);                / Stop the activity - The onDestroy()     /method should s

18、ave the state of the Spinner     mActivity.finish();                / Re-start the Activity - the onResume()     /method should restore the state of the Spinner    

19、mActivity = getActivity();                / Get the Spinner's current position     int currentPosition = mActivity.getSpinnerPosition();           

20、0;    / Assert that the current position is the     /same as the starting position     assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);其中关键的一个方法是getActivity(),只有调用getActivity()后被测试的activity才会启动。此外Instrumentation API允许把测试项目和被测试的应用

21、项目运行到同一个进程中,从而在测试代码中可以直接调用被测试应用的方法和访问其成员。Test case 相关类Android提供了多个由Testcase或Assert派生而来的子类以支持Android平台相关的setup,teardown 和其它辅助方法。AndroidTestCase 为一Android平台下通用的测试类,它支持所有JUnit的Assert方法和标准的setUp 和tearDown 方法,并可以用来测试Android permission 。组件相关的测试类如测试activity, Content provider ,Service 相关的测试类,Android没有提供单独的用

22、来测试BroadcastReceiver 的测试类,而是可以通过发送Intent对象来检测Broadcast Receiver的反应结果来测试BroadcastReceiver。ApplicationTestCase 可以用来测试Application 对象。InstrumentationTestCase 如果你要使用Instrumentation API,那么你必须使用InstrumentationTestCase或其子类。Assertion classesAndroid测试中可以使用JUnit中提供的Assert方法来显示测试结果。除此之外,Testing API还提供了MoreAsser

23、ts 和ViewAsserts 类。其中MoreAsserts支持更多的比较方法包括RegEx(正则)比较等。ViewAsserts 可以用来校验UI View。Mock object classesandroid.test.mock 包中定义一些测试“桩”类,如MockApplication,MockContentProvider ,MockContext,MockCursor, MockPackagManager等用例帮助测试。后面将具体介绍如何使用这些API来编写测试用例。Android测试教程(5):第一个测试项目HelloWorldTest本例介绍创建一个测试项目的一般步骤和编写测试

24、用例的基本方法。为简单起见,创建一个HelloWorld应用,带有一个Greeting类,其定义如下:public class Greeting       private String name;                 public Greeting(String name)      =name; 

25、;                      public String getGreetings()      return "Hello," +name;                

26、      测试项目打算来测试这个Greeting 类的getGreetings的方法,比如说,创建Greeting(“World”) ,预期的getGreetings 的值应为”Hello,World”。我们可以使用JUnit框架来编写一个测试用例。这里我们在创建HelloWorld的项目的同时创建一个测试项目,参见Android测试教程(3):测试项目可以看到新创建的测试项目名称为HelloWorldTest ,并在src 中创建了com.pstreets.demo.test 文件夹(和HelloWorld 应用的com.pstr

27、eets.demo 包相对应)。但src 还没有任何代码。可以看到HelloWorldTest 属性的Java Build Path-> Projects 中引用的Project为HelloWorld, 表示在HelloWorldTest 项目中可以引用HelloWorld 项目中的类。然后在HelloWorldTest的src 的com.pstreets.demo.test 中添加一个AllTests.java,其定义如下:public class AllTests extends TestSuite         

28、;         public static Test suite()       return new TestSuiteBuilder(AllTests.class)      .includeAllPackagesUnderHere()      .build();        

29、   AllTests.java 一般可以不用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder 的类定义那些Testcase 需要包含到最终的测试包(Test Suite)中.定义了AllTests.java ,这个测试项目就基本完整了,也可以运行了,只是还没有定义任何测试用例(Test case) 。这里定义一个GreetingTest ,用于测试Greeting 类:public class GreetingTest extends TestCase       

30、           Greeting greeting;                 Override public void setUp()      greeting=new Greeting("World");  &#

31、160;                               Override public void tearDown()               

32、;                   public void testGetGreeting()       assertTrue(greeting.getGreetings()      .compareToIgnoreCase("Hello,World")=0);  

33、60;                   其实对于与这个例子setUp和tearDown 不是必须的,如果多个TestCase 使用同一组测试数据,可以在setUp 中创建这些测试数据,JUnit 中运行每个TestCase 前会运行setUp ,运行TestCase 后会执行tearDown 。JUnit 把以test开头的方法作为一个实例,也可以使用annotation Test 表示一个方法为测试方法。Greeting

34、Test 由TestCase 派生,因为这里测试是一个普通Java类(和Android 平台无关),也可以使用AndroidTestCase 作为基类。testGetGreeting 使用assertTrue 来检测测试结果,预期的getGreetings()的值为”Hello,World” ,如果为true ,表示测试通过。以Android JUint Test 的方式运行HelloWorldTest运行HelloWorldTest 时,Android测试环境会自动启动HelloWorld ,并在JUint 窗口显示最终测试结果。在开发应用过程中,可以一边编写应用,一边编写测试用例。Andr

35、oid测试教程(6):测试ActivityActivity的测试非常依赖于Android的Instrumation 框架,和Android其他组件不同的是,Activity具有复杂的生命周期回调函数(如onCreate, onStart 等) ,通常情况下除通过Instrumation 接口外不能直接调用这些回调函数。· 测试Activity的基本测试类为InstrumentationTestCase,它提供了Instrumentation接口给TestCase的子类。 为了支持Activity测试,InstrumentationTestCase提供了下面功能:· 生命周期

36、控制: 使用Instrumentation,你可以启动,暂停,中止被测试的Activity。· Dependency Injection : Instrumentation允许创建一些Mock对象如Context,Application来帮助测试Activity,从而帮助你控制测试环境并和实际的应用的其他部分隔离开来。你也可以定制一些Intent以启动Activity。· 用户界面交互: 你可以使用Instrumentation向UI发送按键和触摸事件。下面几个为主要的用于测试Activity由TestCase派生而来的测试类:· ActivityInstrume

37、ntationTestCase2 通常用于多个Activity的功能测试,它使用正常的系统框架来运行Activity(使用应用程序本身),并使用正常系统Context (非Mock)来测试Activity的功能。 允许你创建一些Mock Intent 用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。· ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context

38、或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。· SingleLaunchActivityTestCase 用于测试单个Activity,和ActivityUnitTestCase不同的是,它只运行setUp 和tearDown 一次,而不是在运行testCase 中每个Test Method前后运行setup 和tearDown ,它可以保证运行多个测试之间fixture 不会被重置,从而可以用来测试一些有关联的方法。本篇和后面几篇介绍Activity,

39、Service,Content Provider 测试的基本概念和相关类,之后则结合ApiDemo->Tests 为例具体介绍这些类的用法。Android测试教程(7):测试Content ProviderContent Provider 为不同的应用访问数据提供了统一的接口,本篇介绍Android测试包中用于测试Content Provider 的相关知识。Android 测试包中用于测试Content Provider的基本类为ProviderTestCase2, 允许你在一个隔离环境下来测试Content Provider。 并提供了一些Mock类如IsolatedContext

40、,MockContentResover 来辅助测试。和其它测试一样,对于Content Provider测试也是通过InstrumentationTestRunner 来进行的。编译测试代码的一般方法是通过派生ProviderTestCase2 (为AndroidTestCase 的子类),因此可以使用JUnit和Android平台相关的方法来测试Content Provider。可以参见后面的实例来了解如何测试Content Provider。Android测试教程(8):测试ServiceAndroid 测试框架也提供对Service测试的支持,基本类为ServiceTestCase,因为

41、Service类通常假定和它是和Client是分开使用的,因此你可以无需使用Instrumentation 来测试Service。当你设计一个Service时,你应该考虑测试用例中如何检查Service的当前状态,比如你在onCreate ,onStartCommand 中启动一个Service,一般没有一个全局变量来表示Service是否成功,你可能需要自己定义一个全局变量用于测试用例中。ServiceTestCase 中提供getService() 可以取得当前被测试的Service对象。ServiceTestCase 为AndroidTestCase的子类,因此可以测试和Permissi

42、on 相关的功能,并提供Mock的Application 和Context 对象为测试Service提供了一个隔离的测试环境。Android测试教程(9):ApplicationTestCase示例前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例。在此之前可以参照Android测试教程(3):测试项目 创建ApiDemos->tests 测试项目,本项目测试用来测试ApiDemos,主要目的是介绍Android测试框架的使用方法。当然要测试ApiDemos,事先要创建好项目ApiDemos。下图显示了创建好ApiD

43、emos->Tests后,ApiDemos->Tests中所含的Java类:Android测试项目也是一个Android应用项目,其基本使用方法和开发一般的Android应用非常类似,Android测试项目主要是利用Android测试框架编写测试用例来测试对应的Android应用的各个方面。其中AllTests.java 定义如下:public class AllTests extends TestSuite                &#

44、160; public static Test suite()       return new TestSuiteBuilder(AllTests.class)      .includeAllPackagesUnderHere()      .build();           使用TestSuiteBuilder 指明所有该包和其子包中定义

45、的TestCase都为最终TestSuite 的一部分(需要被运行的测试)。AllTests.java 一般可以不用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder 的类定义那些Testcase 需要包含到最终的测试包(Test Suite)中.ApiDemosApplicationTests 测试介绍ApplicationTestCase的基本使用方法。下图为ApplicationTestCase 的继承关系:ApplicationTestCase 主要用来测试Application 类,提供了对Application类生命周期方法的

46、基本支持,并可以支持一些dependency injection 以帮助构造测试Application的的环境。Application Lifecycle 支持, 每个Application运行 都遵循一定的顺序(生命周期方法),ApplicationTestCase提供下面方法来支持对Application生命周期方法的测试:· 只有当测试用例调用createApplication()后才会执行Application 的onCreate 方法,从而使得你有机会在调用Application的onCreate方法之前对测试框架做些调整。· 当测试用例结束时,测试用例的tear

47、Down 方法会被调用,然后会调用Application 的onDestroy()方法停止和销毁Application.Dependency Injection 每个Application都依赖于运行它的Context 对象,Android测试框架允许你注入一个Mock的或者孤立的context 对象,以实现真正的单元测试,如果只是想做一般的测试,你的Application方法将被注入全功能的Context对象,你可以使用setContext 来注入你定义的Mock 的Context对象,setContext 必须在createApplication 之前调用。测试框架提供了如MockCont

48、ext, RenamingDelegatingContext, ContextWrapper 来帮助你构造用于测试Applicaton的Context对象。本例的代码如下:public class ApiDemosApplicationTests      extends ApplicationTestCase<ApiDemosApplication>                 

49、 public ApiDemosApplicationTests()       super(ApiDemosApplication.class);                       Override protected void setUp() throws Exception   &#

50、160;   super.setUp();                       SmallTest public void testPreconditions()                  &#

51、160;     /*     * Test basic startup/shutdown of Application     */ MediumTest public void testSimpleCreate()       createApplication();            &#

52、160;         有几个新知识1. SmallTest 和MediumTest标注Android测试框架可以使用SmallTest,MediumTest和LargeTest 来标注测试方法,这些分类划分主要是根据测试访问数据的位置,如本地,SD卡,网络,下表为通常划分测试等级的基本方法:Feature   Small   Medium   Large  Network access   No   localhost only  

53、 Yes  Database   No   Yes   Yes  File system access   No   Yes   Yes  Use external systems   No   Discouraged   Yes  Multiple threads   No   Yes   Yes  Sleep statements   No   Yes   Yes  System p

54、roperties   No   Yes   Yes  Time limit (seconds)   60   300   900+  2. testPreconditionstestPreconditions 测试主要用来运行其它测试方法之前来校验Application 对象的初始化情况,和setUp类似,但和setUp 不同的是,testPreconditions只会被运行一次,而setUp通常在执行每个测试方法之前都会运行一次,一般需把它做为Application第一个测试方法,但由于JUnit使用Refle

55、ction 来取得测试方法,因此并不一定能保证testPreconditions一定在其它测试方法之前运行。testSimpleCreate 为测试Application 的测试方法,调用createApplication 会触发Application 的onCreate 方法,测试结束后,执行tearDown ,然后调用Application 的onDestroy 方法,如果Application 的onCreate, onDestroy 运行抛出异常的话,则本测试方法失败,否则表示测试通过。ApplicationTestCase 还提供了一个terminateApplication 中止A

56、pplication,可以测试Application 的onTerminate 方法。Android测试教程(10):ActivityInstrumentationTestCase2示例ActivityInstrumentationTestCase2 主要用来测试一个或多个Activity的功能测试,使用和最终应用同样的运行环境来测试Activity的功能。可以使用正常系统Context (非Mock)来测试Activity的功能。 并允许你创建一些Mock Intent 用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和Application

57、对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。ActivityInstrumentationTestCase2 的继承关系如下图所示:它的getActivity() 方法可以取得被测试的Activity的实例对象。public class ApiDemosTest      extends ActivityInstrumentationTestCase2<ApiDemos>              

58、    public ApiDemosTest()       super(ApiDemos.class);                       public void testActivityTestCaseSetUpProperly()     

59、 assertNotNull("activity should be launched successfully",      getActivity();           测试方法testActivityTestCaseSetUpProperly 使用getActivity() ,主要目的是测试本测试的Activity能否正常启动,测试getActivity() 是否非空。此外ActivityInstrumentatio

60、nTestCase2 还提供了两个方法:setActivityInitialTouchMode(boolean) 在启动Activity之前设置TouchModesetActivityIntent(Intent) 可以设置启动Activity的Intent 对象来测试ActivityAndroid测试教程(11):ActivityUnitTestCase示例ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试

61、的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。ActivityUnitTestCase 的类继承关系如下图:应该要注意的是,作为单纯的单元测试,被测试的Activity 不运行在一般应用运行的环境中也不和其它Activity产生交互。在这种情况下,不能调用下面的方法,如果调用一般会抛出异常:createPendingResult(int, Intent, int)startActivityIfNeeded(Intent, int)startActivityFromChild(Activity, Intent, int)startNextMatching

62、Activity(Intent)getCallingActivity()getCallingPackage()createPendingResult(int, Intent, int)getTaskId()isTaskRoot()moveTaskToBack(boolean)下面的方法可以调用,但一般不起任何作用,你可以使用getStartedActivityIntent()和getStartedActivityRequest() 来检查参数值。startActivity(Intent)startActivityForResult(Intent, int)下面的方法也可以调用,一般也无效果,可

63、以使用isFinishCalled() 和getFinishedActivityRequest检查传入的参数。finish()finishFromChild(Activity)finishActivity(int)ForwardingTest 的代码如下:public class ForwardingTest      extends ActivityUnitTestCase<Forwarding>             

64、     private Intent mStartIntent;      private Button mButton;                 public ForwardingTest()       super(Forwarding.class);  

65、                     Override protected void setUp() throws Exception       super.setUp();               

66、  mStartIntent = new Intent(Intent.ACTION_MAIN);                       MediumTest public void testPreconditions()       startActivity(mStartIntent, null, n

67、ull);      mButton = (Button) getActivity().findViewById(R.id.go);                 assertNotNull(getActivity();      assertNotNull(mButton);      

68、;                 MediumTest public void testSubLaunch()       Forwarding activity      = startActivity(mStartIntent, null, null);      mBut

69、ton = (Button) activity.findViewById(R.id.go);                 mButton.performClick();                 assertNotNull(getStartedActivityInten

70、t();      assertTrue(isFinishCalled();                       MediumTest public void testLifeCycleCreate()       Forwarding activity 

71、60;    = startActivity(mStartIntent, null, null);      getInstrumentation().callActivityOnStart(activity);      getInstrumentation().callActivityOnResume(activity);            

72、0;    getInstrumentation().callActivityOnPause(activity);                 getInstrumentation().callActivityOnStop(activity);              &#

73、160;       在setUp 中,创建了一个Mock Intent 对象mStartIntent 用于测试Activity。按惯例测试方法testPreconditions 通常作为第一个测试方法,如果该方法Fail的话,表示测试所需的条件不满足,此时其它测试一般也会Fail 。但这个方法并不一定是第一个运行。testSubLaunch 可以测试当前Activity能否成功启动其它Activity,方法getStartedActivityRequest 返回 当前Activity调用startActivityForRe

74、sult(Intent, int) 的request code. 方法isFinishCalled 将在当前activity 调用finish()或finishActivity, finishFromChild 后返回true. Forwarding 示例参照Android ApiDemos示例解析(7):App->Activity->ForwardingtestLifeCycleCreate 测试Activity的生命周期回调函数,使用getInstrumentation取的Instrumentation 对象,通过Instrumentation对象可以调用Activity对应的

75、生命周期回调函数来测试Activity的onCreate, onStart,onResume 等方法。ActivityUnitTestCase 还提供了sendKeys 方法模拟按键事件,可以用来测试UI。Android测试教程(12):ServiceTestCase示例ServiceTestCase 为测试Service提供了一个可控的测试环境,它提供对Service 生命周期的基本支持,并可以通过注入一些依赖对象来控制测试环境以便测试Service。ServiceTestCase的类继承如下图所示:Service Lifecycle 支持, 每个Service运行 都遵循一定的顺序(生命周期方法),ServiceTestCase提供下面方法来支持对Service生命周期方法的测试:· 每个测试方法调用之前首先会执行setUp 方法,setUp 的基本实现是取得系统Context ,如果你要重载setUp 的话,注意在第一行加上super.setUp.· 在调用startService(Intent) 或bindService(Intent) 之后,ServiceTestCase才会调用Service的onCreate 方法,从而

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论