![Android测试教程全_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/509eaf62-540a-4e54-9977-64cb97886355/509eaf62-540a-4e54-9977-64cb978863551.gif)
![Android测试教程全_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/509eaf62-540a-4e54-9977-64cb97886355/509eaf62-540a-4e54-9977-64cb978863552.gif)
![Android测试教程全_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/509eaf62-540a-4e54-9977-64cb97886355/509eaf62-540a-4e54-9977-64cb978863553.gif)
![Android测试教程全_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/509eaf62-540a-4e54-9977-64cb97886355/509eaf62-540a-4e54-9977-64cb978863554.gif)
![Android测试教程全_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/9/509eaf62-540a-4e54-9977-64cb97886355/509eaf62-540a-4e54-9977-64cb978863555.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android测试教程目录Android测试教程1Android测试教程(1):概述1Android测试教程(2):测试基础2Android测试教程(3):测试项目3Android测试教程:测试相关API6Android测试教程(5):第一个测试项目HelloWorldTest8Android测试教程(6):测试Activity11Android测试教程(7):测试ContentProvider12Android测试教程(8):测试Service13Android测试教程(9):ApplicationTestCase示例13Android测试教程(10):ActivityInstrumenta
2、tionTestCase2示例17Android测试教程(11):ActivityUnitTestCase示例18Android测试教程(12):ServiceTestCase示例20Android测试教程(13):TestCase示例22Android测试教程(14):ActivityInstrumentationTestCase2示例23Android测试教程(15):AndroidTestCase示例25Android测试教程(16):monkeyrunner简介27Android测试教程(17):Monkey命令行工具28Android测试教程(18):总结32来源:csdn作者:ma
3、pdigitAndroid测试教程:概述测试也是开发过程中一个重要组成部分,Android开发环境集成一个测试框架可以用来测试Android应用的各个方面,单元测试,UI测试等。本教程基于Android开发教程英文版。基本概念包括 Android测试的基础知识 ActivityTesting侧重于Activity的测试,介绍了如果使用Instrumentation在正常Activity生命周期之外来控制Activity,然后测试Activity的特定的功能和测试UI的一些技巧。 ContentProviderTesting侧重测试ContentProvider。 ServiceTesting侧
4、重测试Service。 需要测试的内容等。以及在EclipseADT开发环境下如何创建一个测试项目和Android开发工具提供的一些测试工具。在阅读本测试教程之前,你需要有Android开发的一些基本知识,可以参见Android开发教程,此外需要了解一些JUnit的基本概念。并又ApiDemo中的测试示例进行解析。Android测试教程:测试基础Android测试框架(AndroidTestingFramework)为Android开发环境的一个组成部分,可以用来测试Android的各个方面,从单元测试到框架测试到UI测试等。其主要功能有: Android测试框架基于JUnit,因此可以直接使
5、用JUnit来测试一些与Android平台不是很相关的类,或者使用Android的JUint扩展来测试Android组件,如果你刚开始接触Android测试,可以先从AndroidTestCase写一些通用的测试用例,然后再写较复杂的测试用例。 AndroidJUint扩展提供了对Android特定组件(如Activity,Service)的测试支持,这些扩展类提供了一些辅助方法来帮助创建测试使用的“桩”类或方法。 创建的测试包包含中一个测试包中,这个测试包和主应用程序包具有类似的结构,创建测试包的步骤和创建Android应用的方法基本类似。 Eclipse的ADT包含了创建测试用例的SDKX
6、具,并提供用于和其它IDE集成的命令行工具。这些工具可以从被测试的应用程序包读取所需信息用于创建测试项目的build文件,mainfest文件和文件目录结构等。 SDKtk提供了一个moneyrunner(一个python应用)可以模拟用户按键事件来测试UI。卜图为Android测试框架的一个总结:Android测试教程:测试项目Android的编译和测试工具需要测试项目组织符合预订的结构:分别为Testcase类,Testcase包以及测试项目。JUnit为Android的测试的基础,一般来说,一个JUint测试为一个用来测试一个应用某一部分的语句。你可以将多个测试Test方法组织起来构成一
7、个测试用例(Testcase),多个测试用例可以构成TestSuites。每个Test方法相对独立,一个测试类Testclass包含一组相关的Test或其它辅助方法。在Android平台上,你可以使用测试工具调入TestPackage和所要测试的应用,然后执行TestRunner来运行测试用例。使用EclipseADT工具创建测试项目的方法:1.在创建应用的同时创建测试项目,如下图AppliationTestBrowse.*Nev;AndroidProjectNewAndruidTestProjectCwatMarhewAndroidTertProjttresource.Content0Use
8、defaultlocationLocatior:C;/ecIipse/workspace/App11ationTestTertTargetTestTargetPackage:com.p-streets.testBuildTargetTargetNameVendorPlatformAPILeDAndroid1.5AndroidOpenSourceProject1.53选中GoogleAPIsHAndroidL6GoogleAPIsAndroid2.1-updatelpGoogleAPIs|Android乙2GoogleAPIs口GALAXYTabAddon Android2.3J|GoogleA
9、PIs EDK11I1CreateaTestProject,GoogleIhgAndroid。昨nSour%ProjectGoogleJnc.AndroidOpenSourceProjectGoogle(ncAndroidOpenSourceProjectGoogleInc.SamsungElectronicsCo.,Ltd.AndreidOpenSourceProjectGoogleInc.SonyEricssonMobileCcmmunicaticnsABflADT自动为应用创建对应的测试项目1,53L64L642.1-updatel721-updatel322811S2JS2slg2.3
10、.1923,19III2.导入已有的测试项目,并和被测试的应用关联。AndroidSDK自带ApiDemo,并带有其对应的测试项目ApiDemos->Test.打开ApiDemos->Test的方法如下,首先是选中BuildTarget(比如Android2.2),然后选择Createprojectfromexistingsample,从下拉列表中选择ApiDemos->Tests(注意你要先创建ApiDemosAndroidApiDemos示例解析(1):创建ApiDemo示例)将ApiDemos->tests和ApiDemos关联起来:的项目Projects中添修改
11、ApiDemos->tests测试项目的属性,在JavaBuildPath力口ApiDemos你最女?使Eclipse工具创建测试项目:作为运行TestPackage或其子类做为Test自动为你的测试项目设置使用InstrumentationTestRunner的TestRunner,测试项目必须使用InstrumentationTestRunnerPackage的runner.为测试项目创建合适的项目名称和测试包名称,比如你需要测试的应用的包名称为com.mydomain.myapp贝U自动创建的测试包名为com.mydomain.myapp.test,从测试包名可以很容易找到对应的应
12、用程序包名称。自动创建合适的build文件,mainifest文件和文件目录结构。建议使用的文件目录结构可以如下所示:MyProjectZAndroidManifest.xmlresZ,(resourcesformainapplication)srcZ(sourcecodeformainapplication)tests/-AndroidManifest.xml-res/-,(resourcesfortests)-src/-,(sourcecodefortests)Android测试教程:测试相关APIAndroid的测试框架相关的API主要定义在三个包中: android.test用于编写A
13、ndroid测试用例 android.test.mock定义了方便测试用的测试"桩"类 android.test.suitebuilder运行测试用例的TestRunner类Android测试API是基于JUnit扩展而来,并添加了与Android平台相关的测试API。JUnit你可以直接使用JUnit中相关API编写一些和平台无关的测试用例(基于TestCase),Android测试API中提供了一个TestCase的子类AndroidTestCase,可以用来编写一些Android相关的对象的测试用例,AndroidTestCase支持一些和平台相关的setup,tea
14、rdown以及setup方法。你也可以直接使用JUnit的Assert方法显示测试结果,这些Assert方法可以通过比较预期的值和实际的值,如果不同可以排除异常。Android测试API扩展了一些Assert方法用于支持和Android平台相关的比较。要注意的是,Android测试API支持JUnit3代码风格,而不支持JUnit4代码风格,也只能使用InstrumentationTestRunner来运行测试用例。InstrumentationAndroid的Instrumentation提供了一些"钩子"方法连接到Android操作系统中,可以独立控制Android组件
15、(Activity,Service等)的生命周期,并可以控制Android如何调用一个应用。在通常情况下(普通的Android应用),Android的activity,Service等的生命周期是由Android操作系统来控制的。比如一个Activity的生命周期开始于onCreate(由某个Intent激活),然后是onResume.可以参见Android简明开发教程五:Activities。应用程序本身无法直接控制这些生命周期状态的切换。但使用InstrumatationAPI时你可以直接调用这些方法。一个进程中,这在通常的情况下是不可能实现的。使用InstrumentationAPI你可
16、以直接调用Activity或是Service的生命周期回调函数,从而可以让你运行一步一步的运行Activity或是Service的生命周期函数。如下例显示了如何使用InstrumentationAPI来测试Activity保持和恢复State。/Startthemainactivityofthe/applicationundertestmActivity=getActivity();/GetahandletotheActivityobject's/mainUIwidget,aSpinnermSpinner=(Spinner)mActivity.findViewById(com.andr
17、oid.example.spinner.R.id.Spinner01);/SettheSpinnertoaknownpositionmActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);/Stoptheactivity-TheonDestroy()/methodshouldsavethestateoftheSpinnermActivity.finish();/Re-starttheActivity-theonResume()/methodshouldrestorethestateoftheSpinnermActivity=getAc
18、tivity();/GettheSpinner'scurrentpositionintcurrentPosition=mActivity.getSpinnerPosition();/Assertthatthecurrentpositionisthe/sameasthestartingpositionassertEquals(TEST_STATE_DESTROY_POSITION,currentPosition);其中关键的一个方法是getActivity(),只有调用getActivity()后被测试的activity才会启动。此外InstrumentationAPI允许把测试项目和被
19、测试的应用项目运行到同一个进程中,从而在测试代码中可以直接调用被测试应用的方法和访问其成员。Testcase相关类Android提供了多个由Testcase或Assert派生而来的子类以支持Android平台相关的setup,teardown和其它辅助方法。AndroidTestCase为一Android平台下通用的测试类,它支持所有JUnit的Assert方法和标准的setUp和tearDown方法,并可以用来测试Androidpermission组件相关的测t类如测试activity,Contentprovider,Service相关的测试类,Android没有提供单独白用来测试Broad
20、castReceiver的测试类,而是可以通过发送Intent对象来检测BroadcastReceiver的反应结果来测试BroadcastReceiver。ApplicationTestCase可以用来测试Application对象。InstrumentationTestCase如果你要使用InstrumentationAPI,那么你必须使用InstrumentationTestCase或其子类。AssertionclassesAndroid测试中可以使用JUnit中提供的Assert方法来显示测试结果。除此之外,TestingAPI还提供了MoreAsserts和ViewAsserts类。
21、其中MoreAsserts支持更多的比较方法包括RegEx(正则)比较等。ViewAsserts可以用来校验UIView。Mockobjectclassesandroid.test.mock包中定义一些测试"桩"类,如MockApplication,MockContentProvider,MockContext,MockCursor,MockPackagManager等用例帮助测试。后面将具体介绍如何使用这些API来编写测试用例。Android测试教程(5):第一个测试项目HelloWorldTest本例介绍创建一个测试项目的一般步骤和编写测试用例的基本方法。为简单起见,创
22、建一个HelloWorld应用,带有一个Greeting类,其定义如下:publicclassGreetingprivateStringname;publicGreeting(Stringname)=name;publicStringgetGreetings()return"Hello,"+name;测试项目打算来测试这个Greeting类的getGreetings的方法,比如说,创建Greeting("World"),预期的getGreetings的值应为"Hello,World"。我们可以使用JUnit框架来编写
23、一个测试用例。这里我们在创建HelloWorld的项目的同时创建一个测试项目,参见Android测试教程(3):测试项目HeiloWorldJ®5TC由com.pstreets.demori|7|Greeting.java©Greetingorame3Greetin虱StringqgetGreeitingeO;.1.rinj.UMeItoWorIdjava.©HelioWorldagreetingcriCreatetBLindh:cidt>孰genGeneratedJavaFilesbMAndroid1.6assetsAndroidMarrifel.xmId
24、efault,propertiespreguard.cfgk-H&NoWorldTet»西5rleV津genGeneratedJavaFilesAndroidL6assetsAndroidMarrif&5ticmI国default,propettierprcguard.cfg可以看到新创建的测试项目名称为HelloWorldTest,并在src中创建了com.pstreets.demo.test文件夹(和HelloWorld应用的com.pstreets.demo包相对应)。但src还没有任何代码。可以看到HelloWorldTest属性的JavaBuildPath-
25、>Projects中引用的Project为HelloWorld,表示在HelloWorldTest项目中可以引用HelloWorld项目中的类。然后在HelloWorldTest的src的com.pstreets.demo.test中添加一个AllTests.java,其定义如下:publicclassAllTestsextendsTestSuitepublicstaticTestsuite()returnnewTestSuiteBuilder(AllTests.class).includeAllPackagesUnderHere().build();AllTests.java般可以不用
26、修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder的类定义那些Testcase需要包含到最终的测试包(TestSuite)中.定义了AllTests.java,这个测试项目就基本完整了,也可以运行了,只是还没有定义任何测试用例(Testcase)。这里定义一个GreetingTest,用于测试Greeting类:publicclassGreetingTestextendsTestCaseGreetinggreeting;OverridepublicvoidsetUp()greeting=newGreeting("World&qu
27、ot;);)OverridepublicvoidtearDown()publicvoidtestGetGreeting()assertTrue(greeting.getGreetings().compareToIgnoreCase("Hello,World")=0);)其实对于与这个例子setUp和tearDown不是必须的,如果多个TestCase使用同一组测试数据,可以在setUp中创建这些测试数据,JUnit中运行每个TestCase前会运行setUp,运行TestCase后会执行tearDown。JUnit把以test开头的方法作为一个实例,也可以使用annotat
28、ionTest表示一个方法为测试方法。GreetingTest由TestCase派生,因为这里测试是一个普通Java类(和Android平台无关),也可以使用AndroidTestCase作为基类。testGetGreeting使用assertTrue来检测测试结果,预期的getGreetings()的值为"Hello,World”,如果为true,表示测试通过。以AndroidJUintTest的方式运行HelloWorldTestRunAs。白bugAsValidateTeamCompareWithRestore-fromLd匚口IHistory-.4一.T_I->Ll_4
29、JavaApplicationAlt-bShift+X,JJl5JUnitTestR.urrCcnfigurations.,.AltfShift-bXT运彳亍HelloWorldTest时,Android测试环境会自动启动HelloWorld,并在JUint窗口显示最终测试结果。在开发应用过程中,可以一边编写应用,一边编写测试用例。Android测试教程(6):测试ActivityActivity的测试非常依赖于Android的Instrumation框架,和Android其他组件不同的是,Activity具有复杂的生命周期回调函数(如onCreate,onStart等),通常情况下除通过In
30、strumation接口外不能直接调用这些回调函数。 测试Activity的基本测试类为InstrumentationTestCase,它提供了Instrumentation接口给TestCase的子类。为了支持Activity测试,InstrumentationTestCase提供了下面功能: 生命周期控制:使用Instrumentation,你可以启动,暂停,中止被测试的ActivityDependencyInjection:Instrumentation允许创建一些Mock对象如Context,Application来帮助测试Activity,从而帮助你控制测试环境并和实际的应用的其他部
31、分隔离开来。你也可以定制一些Intent以启动Activity。 用户界面交互:你可以使用Instrumentation向UI发送按键和触摸事件。下面几个为主要的用于测试Activity由TestCase派生而来的测试类: ActivityInstrumentationTestCase2通常用于多个Activity的功能测试,它使用正常的系统框架来运行Activity(使用应用程序本身),并使用正常系统Context(非Mock)来测试Activity的功能。允许你创建一些MockIntent用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和A
32、pplication对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。 ActivityUnitTestCase通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。 SingleLaunchActivityTestCase用于测试单个Activity,和ActivityUnitTestCase不同的是,它只运行setUp和tearDown一次,而不是在运行
33、testCase中每个TestMethod前后运行setup和tearDown,它可以保证运行多个测试之间fixture不会被重置,从而可以用来测试一些有关联的方法。本篇和后面几篇介绍Activity,Service,ContentProvider测试的基本概念和相关类,之后则结合ApiDemo->Tests为例具体介绍这些类的用法。Android测试教程(7):测试ContentProviderContentProvider为不同的应用访问数据提供了统一的接口,本篇介绍Android测试包中用于测试ContentProvider的相关知识。Android测试包中用于测试ContentP
34、rovider的基本类为ProviderTestCase2,允许你在一个隔离环境下来测试ContentProvider。并提供了一些Mock类如IsolatedContext,MockContentResover来辅助测试。和其它测试一样,对于ContentProvider测试也是通过InstrumentationTestRunner来进行的。编译测试代码的一般方法是通过派生ProviderTestCase2(为AndroidTestCase的子类),因此可以使用JUnit和Android平台相关的方法来测试ContentProvider。可以参见后面的实例来了解如何测试ContentProv
35、ider。Android测试教程(8):测试ServiceAndroid测试框架也提供对Service测试的支持,基本类为ServiceTestCase,因为Service类通常假定和它是和Client是分开使用的,因此你可以无需使用Instrumentation来测试Service。当你设计一个Service时,你应该考虑测试用例中如何检查Service的当前状态,比如你在onCreate,onStartCommand中启动一个Service,一般没有一个全局变量来表示Service是否成功,你可能需要自己定义一个全局变量用于测试用例中。ServiceTestCase中提供getServic
36、e()可以取得当前被测试的Service对象。ServiceTestCase为AndroidTestCase的子类,因此可以测试和Permission相关的功能,并提供Mock的Application和Context对象为测试Service提供了一个隔离的测试环境。Android测试教程(9):ApplicationTestCase示例前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例。在此之前可以参照Android测试教程(3):测试项目创建ApiDemos->tests测试项目,本项目测试用来测试ApiDemos
37、,主要目的是介绍Android测试框架的使用方法。当然要测试ApiDemos,事先要创建好项目ApiDemos。下图显示了创建好ApiDemos->Tests后,ApiDemos->Tests中所含的Java类:任ApiOemos/士ccm_exannple_android_apis_tfrsts三Android2.2/3“七,舟匚口小库*号mpk1用ndqidgpi导J|AllTests.java|_JApiDemosApplicationTe.javal|ApIDemo5Testjava* ,jjccm.ej(ample.dnclroid,apis,app|J|Forwardi
38、ngTe?t.java.JLocalService!Mtjava* 70r二onn,碎xompl号用ndq汨闻.MorseCodeCoriverterTestjava* :cam.examplendroidrjpiview|JFocus?Activity7est.java7iFocu52AndroidTestjavagenGe"eraitc.a1;a-liesassetsresA.ndroidMarrife5t.xmIbufldpropertitndefaultpropertiesAndroid测试项目也是一个Android应用项目,其基本使用方法和开发一般的Android应用非常类
39、似,Android测试项目主要是利用Android测试框架编写测试用例来测试对应的Android应用的各个方面。其中AllTests.java定义如下:publicclassAllTestsextendsTestSuitepublicstaticTestsuite()returnnewTestSuiteBuilder(AllTests.class).includeAllPackagesUnderHere().build();使用TestSuiteBuilder指明所有该包和其子包中定义的TestCase都为最终TestSuite的一部分(需要被运行的测试)。AllTests.java一般可以不
40、用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder的类定义那些Testcase需要包含到最终的测试包(TestSuite)中.ApiDemosApplicationTests测试介绍ApplicationTestCase的基本使用方法。下图为ApplicationTestCase的继承关系:旧日忸/口口自阻LjunrLfra色w/uricT曰stCase间巾-叱由与An由加侬©£(Landroid.test.Applies!ionTestCaE&=Textends-nUmid口皿ApubcaflonAppli
41、cationTestCase主要用来测试Application类,提供了对Application类生命周期方法的基本支持,并可以支持一些dependencyinjection以帮助构造测试Application的的环境。ApplicationLifecycle支持,每个Application运行都遵循一定的顺序(生命周期方法),ApplicationTestCase提供下面方法来支持对Application生命周期方法的测试:只有当测试用例调用createApplication()后才会执行Application的onCreate方法,从而使得你有机会在调用Application的onCrea
42、te方法之前对测试框架做些调整。当测试用例结束时,测试用例的tearDown方法会被调用,然后会调用Application的onDestroy()方法停止和销毁Application.DependencyInjection每个Application都依赖于运行它的Context对象,Android测试框架允许你注入一个Mock的或者孤立的context对象,以实现真正的单元测试,如果只是想做一般的测试,你的Application方法将被注入全功能的Context对象,你可以使用setContext来注入你定义的Mock的Context对象,setContext必须在createApplicat
43、ion之前调用。测试框架提供了如MockContext,RenamingDelegatingContext,ContextWrapper来帮助你构造用于测试Applicaton的Context对象。本例的代码如下:publicclassApiDemosApplicationTestsextendsApplicationTestCase<ApiDemosApplication>publicApiDemosApplicationTests()super(ApiDemosApplication.class);OverrideprotectedvoidsetUp()throwsExcept
44、ionsuper.setUp();SmallTestpublicvoidtestPreconditions()*Testbasicstartup/shutdownofApplication*/MediumTestpublicvoidtestSimpleCreate()createApplication();有几个新知识1. SmallTestMediumTest:Android测试框架可以使用SmallTest,MediumTest和LargeTest来标注测试方法,这些分类划分主要是根据测试访问数据的位置,如本地,SD卡,网络,下表为通常划分测试等级的基本方法:FeatureSmallMed
45、iumLargeNetworkaccessNolocalhostonlyYesDatabaseNoYesYesFilesystemaccessNoYesYesUseexternalsystemsNoDiscouragedYesMultiplethreadsNoYesYesSleepstatementsNoYesYesSystempropertiesNoYesYesTimelimit(seconds)60300900+2. testPreconditionstestPreconditions测试主要用来运行其它测试方法之前来校验Application对象的初始化情况,和setUp类似,但和set
46、Up不同的是,testPreconditions只会被运行一次,而setUp通常在执行每个测试方法之前都会运行一次,一般需把它做为Application第一个测试方法,但由于JUnit使用Reflection来取得测试方法,因此并不一定能保证testPreconditions一定在其它测试方法之前运行。testSimpleCreate为测试Application的测试方法,调用createApplication会触发Application的onCreate方法,测试结束后,执行tearDown,然后调用Application的onDestroy方法,如果Application的onCreate
47、,onDestroy运行抛出异常的话,则本测试方法失败,否则表示测试通过。ApplicationTestCase还提供了一个terminateApplication中止Application,可以测试Application的onTerminate方法。Android测试教程(10):ActivityInstrumentationTestCase2示例ActivityInstrumentationTestCase2主要用来测试一个或多个Activity的功能测试,使用和最终应用同样的运行环境来测试Activity的功能。可以使用正常系统Context(非Mock)来测试Activity的功能。并
48、允许你创建一些MockIntent用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。ActivityInstrumentationTestCase2的继承关系如下图所示:Ljunit,fi一meworkAssartLiunHfmm-waflcTLanWoicnestInstrum而。:旧订席teaseL自门droid-10tAjctr-tyT自客自Landroid.tesLAcljityinsfrumentalionTestGase2<Textends-由由
49、立白口仇仙忖I它的getActivity()方法可以取得被测试的Activity的实例对象。publicclassApiDemosTestextendsActivityInstrumentationTestCase2<ApiDemos>publicApiDemosTest()super(ApiDemos.class);publicvoidtestActivityTestCaseSetUpProperly()assertNotNull("activityshouldbelaunchedsuccessfully",getActivity();测试方法testActi
50、vityTestCaseSetUpProperly使用getActivity(),主要目的是测试本测试的Activity能否正常启动,测试getActivity()是否非空。此外ActivityInstrumentationTestCase2还提供了两个方法:setActivityInitialTouchMode(boolean)在启动Activity之前设置TouchModesetActivityIntent(Intent)可以设置启动Activity的Intent对象来测试ActivityAndroid测试教程(11):ActivityUnitTestCase示例ActivityUnitT
51、estCase通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。ActivityUnitTestCase的类继承关系如下图:旧回mno口口回通仃日meworkAssertLiunitTpstCa5HkdTidRjmerrtationT白tC3津eUaEed加stAcbyitvTestCasHLandroidtestActurrtyUnitTestCas&=
52、:remends+唧加"应该要注意的是,作为单纯的单元测试,被测试的Activity不运行在一般应用运行的环境中也不和其它Activity产生交互。在这种情况下,不能调用下面的方法,如果调用一般会抛出异常:createPendingResult(int,Intent,int)startActivityIfNeeded(Intent,int)startActivityFromChild(Activity,Intent,int)startNextMatchingActivity(Intent)getCallingActivity()getCallingPackage()createPen
53、dingResult(int,Intent,int)getTaskId()isTaskRoot()moveTaskToBack(boolean)下面的方法可以调用,但一般不起任何作用,你可以使用getStartedActivityIntent()和getStartedActivityRequest()来检查参数值。startActivity(Intent)startActivityForResult(Intent,int)isFinishCalled()下面的方法也可以调用,一般也无效果,可以使用getFinishedActivityRequest检查传入的参数。finish()finishF
54、romChild(Activity)finishActivity(int)ForwardingTest的代码如下:publicclassForwardingTestextendsActivityUnitTestCase<Forwarding>privateIntentmStartIntent;privateButtonmButton;publicForwardingTest()super(Forwarding.class);OverrideprotectedvoidsetUp()throwsExceptionsuper.setUp();mStartIntent=newIntent(
55、Intent.ACTION_MAIN);MediumTestpublicvoidtestPreconditions()startActivity(mStartIntent,null,null);mButton=(Button)getActivity().findViewById(R.id.go);assertNotNull(getActivity();assertNotNull(mButton);MediumTestpublicvoidtestSubLaunch()Forwardingactivity=startActivity(mStartIntent,null,null);mButton=
56、(Button)activity.findViewById(R.id.go);mButton.performClick();assertNotNull(getStartedActivityIntent();assertTrue(isFinishCalled();MediumTestpublicvoidtestLifeCycleCreate()Forwardingactivity=startActivity(mStartIntent,null,null);getInstrumentation().callActivityOnStart(activity);getInstrumentation().callActivityOnResume(activity);getInstrumentation().callActivityOnPause(activity);getInstrumentation().callActivityOnStop(activity);在setUp中,创建了一个MockIntent对象mStartIntent用于测试Activity。按惯例测试方法testPrecondi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 佳木斯彩钢翻新施工方案
- 2024幼儿园中班第二学期班务工作计划
- 《DRUGS系统概况》课件
- 养猪创业项目计划书
- 个人2024年下半年工作计划024年个人工作计划
- 8总厂办公室个人某年度工作总结-工作计划提醒
- 公司财务2024年工作工作计划
- 新型墙体材料发展计划
- 2024年月中学校本研修工作计划范文
- 2021城乡远程教育季度工作计划安排
- 农民工考勤表(模板)
- 高中数学公开课优质课1.3.0探究与发现“杨辉三角”中的一些秘密【市一等奖】优质课
- 小米物联网业务布局研究报告
- 2022更新国家开放大学电大专科《个人理财》2023-2024期末试题及答案(试卷代号:3963)
- GB 11372-1989 防锈术语-行业标准
- 城市住房建设规划编制导则
- [英语]初中英语八大时态复习
- 企业信息服务平台建设项目可行性研究报告
- 医院矛盾纠纷排查总结的个附表
- ISO2372设备振动标准
- 电脑绣花机安全操作规程.doc
评论
0/150
提交评论