搜档网
当前位置:搜档网 › Android—SDK测试

Android—SDK测试

Android—SDK测试
Android—SDK测试

android中文SDK--测试基本原理

转载▼

测试基本原理

android测试框架,作为集成开发环境的一部分,提供了一个架构和强大的工具来帮助你从单元到框架来测试应用程序各个层次的各个方面。

测试框架有以下特征:

i.android测试套件基于JUnit。你可以很容易地使用JUnit,不需要调用Android API既可

以测试一个类,或者不需要通过Android的JUnit扩展就可以测试一个一个android组件。

如果你初学Android测试,你可以从通用测试用例类(如AndroidTestCase)开始,然后再使用更高级的类。

ii.Android Junit扩展提供了特定组件的测试用例类。这些类提供了一些辅助方法,通过这些方法可以创建模拟对象和方法,以此帮助你控制组件的生命周期。

iii.测试套件包含在测试包里,与主要的应用程序包相类似,这样你既不需要学习一套新的工具和技术来设计和构建测试了。

iv.Eclipse的ADT里有可用的构建和测试的SDK工具,对于其他IDE也提供了命令行工具。

这些工具从被测应用程序项目获取信息,通过这些信息自动生成构建文件,配置文件和测试包的结构目录。

v.SDK还提供了monkeyrunner,用Python语言测试设备的API。还有UI/Application Exerciser Monkey,一个对UI进行压力测试的命令行工具,可以给设备发送随机事件。

文档描述了Android测试框架的基本原理,包括测试的结构,用来开发测试的API,和用来运行和查看测试结果的工具。文档假定你已经具有Android应用程序和JUnit测试方法的知识。

测试框架:

图1 测试结构

Android的构建和测试工具假定测试项目是以标准的测试结构、测试用例类、测试包和测试项目来组织的。

Android测试基于JUnit。通常来说,一个JUnit测试就是一个方法,测试应用程序的一个部分。把测试方法组织到一个叫做测试用例或测试套件test case or test suites里。每个测试多是一个独立的测试模块。每个类是一个一系列相关联的测试的容器,尽管他经常提供一些帮助方法。

在JUnit里,你在一个类文件里构建一个或多个测试源代码。相类似的,在Android中,你使用SDK的构建工具来构建一个或多个测试源代码到一个Android测试包的类文件里。在JUnit中,你使用一个test runner来执行测试类。在Android中,你使用测试工具加载测试包和要测试的应用程序,然后测试工具执行一个特定的Android test runner。

测试项目

测试像android应用程序一样被组织成项目。一个测试项目是一个目录或者Eclipse项目,在里面你可以为测试包创建源代码,配置文件和其他文件。Android SDK包含了用于Eclipse ADT插件的工具和命令行工具,用来帮助你创建和更新测试项目。这些工具为源代码、资源和配置文件创建目录。命令行工具还创建你需要的Ant构建文件。

你应该使用Android工具来创建测试项目。有以下好处:

i.自动建立测试包,用InstrumentationTestRunner作为test case runner。你必须使用

InstrumentationTestRunner和他的子类来运行JUnit测试。

ii.为测试包创建一个合适的名字。如果要测试的应用程序有一个名为com.mydomain.myapp包,Android工具就会将测试包名设置为

com.mydomain.myapp.test。帮助你识别他们的关系,避免系统内冲突。

iii.为测试项目自动创建合适的构建文件、配置文件和目录结构。帮助你构建测试包而不需要修改构建文件和在测试包与要测试的应用程序间设置链接。

你可以在文件系统中的任何位置创建一个测试项目,但最好的方法就是在应用程序的src/目录的同一个根目录下创建一个tests/目录,以他来作为测试项目的更目录。这方便找到与应用程序关联的测试。例如,应用程序项目根目录是MyProject,那么你应该使用以下的目录结构:

MyProject/

AndroidManifest.xml

res/

... (resources for main application)

src/

... (source code for main application) ...

tests/

AndroidManifest.xml

res/

... (resources for tests)

src/

... (source code for tests)

测试API

android测试API基于JUnit API,并且通过instrumentation框架和Android特定的测试类来扩展。

JUnit

你可以用JUnit TestCase类来对一个简单的java对象进行单元测试。TestCase也是AndroidTestCase的基类,你可以使用AndroidTestCase测试依赖于Android的对象。除了提供JUnit框架,AndroidTestCase还提供了Android特定的setup、teardown和辅助方法。

你可以使用JUnit Assert类来显示测试结果。assert方法比较你测试的期望值和实际结果值,如果比较失败则抛出异常。Android也提供了一个断言的类,扩展了比较的类型,还有另一个断言类来测试UI。这些将在Assertion calsses中介绍。

想学习更多关于JUnit的知识,可以阅读https://www.sodocs.net/doc/cc14020193.html,主页。注意,Android测试API支持Junit3代码风格而不支持JUnit4.还有,你必须使用Android的instrumentation测试运行器InstrumentationTestRunner来运行你的测试用例类。这个测试运行器将在Running Tests部分介绍。

Instrumentation

Android instrumentation是一系列的控制方法或Android系统里的“hooks”钩子。这些hooks独立控制地一个Android组件的生命周期。他们也控制Android如何加载应用程序。

通常来说,一个Android组件运行在一个有系统决定的生命周期里。例如,一个activity 对象的生命周期在他被一个Intent激活的时候开始。该对象的onCreate()方法被调用,接着调用onResume()。当用户启动另一个应用程序,onPause()方法被调用。如果activity的代码

中调用了finish()方法,onDestroy()方法被调用。Android框架API不提供直接调用这些回调方法的途径,但是你可以通过使用instrumentation来达到直接调用回调方法这个目的。

而且,系统让一个应用程序里的所有组件都运行在同一个进程中。你可以允许一些组件如contentProvider运行在一个另外的进程,但是你却不可以强制一个应用程序运行在与一个正在运行的应用程序相同的进程里。

通过Android instrumentation,你可以在测试代码中调用回调方法。这样使得你可以一步一步的运行生周期的每个阶段,就像你调试组件那样。以下代码片段演示如何使用它来测试一个activity保存和回复状态:

// Start the main activity of the application under test

mActivity = getActivity();

// Get a handle to the Activity object's main UI widget, a Spinner

mSpinner = (Spinner)mActivity.findViewById(com.android.example.spinner.R.id.Spinner01);

// Set the Spinner to a known position

mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);

// Stop the activity - The onDestroy() method should save the state of the Spinner

mActivity.finish();

// Re-start the Activity - the onResume() method should restore the state of the Spinner mActivity = getActivity();

// Get the Spinner's current position

int currentPosition = mActivity.getSpinnerPosition();

// Assert that the current position is the same as the starting position

assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);

这里用到的关键方法getActivity()是instrumentation API的一部分。要测试的Activity知道你调用该方法才会启动。你可以先进行测试前的准备工作,然后调用该方法启动Activity。

同时,instrumentation可以把一个测试包和将要测试的应用程序加载到相同的进程中。由于应用程序组件和他们的测试在相同的进程中,所以测试可以调用组件中的方法,修改和检查组件的属性。

测试用例类test case classes

Android提供了几个测试用例类,这些类都是通过扩展TestCast类和Assert类的来的,具有android特定的setup、teardown和辅助方法。

AndroidTestCase

AndroidTestCase是一个很有用的开始Android测试的普通测试用例类。它扩展了TestCase 和Assert。他提供了JUnit标准的setUp()和tearDown()方法,同时还有所有JUnit的Assert 方法。另外,它提供了测试权限的方法,并且提供了一个通过清除特定类引用来防止内存泄漏的方法。

特定组件的测试用例

Android测试框架的一个主要特性就是它的用于特定组件的测试用例类。这些类用于特定的组件测试需要,具有setup和teardown和组件的生命周期控制方法。他们同时提供了

设置mock对象的方法。这些类在特定组件测试主题里介绍:

l activity测试

l ContentProvider测试

l Service测试

Android没有为BroadcaseReceiver提供一个单独的测试用例类。取而代之的是,通过测试给他发送Intent对象的组件,验证BroadcaseReceiver是否正确响应,以此来测试BroadcaseReceiver。

ApplicationTestCase

你可以用ApplicationTestCase测试应用程序对象的setup和teardown。这些对象保留信息的全局状态,这些信息是应该到应用程序包里的所有组件的。这个测试用例在验证配置文件的元素是否正确设置是非常有用。但是注意:该测试用例不允许你控制应用程序里组件的测试。

InstrumentationTestCase

如果你想在一个测试用例类里使用instrumentation方法,你必须使用InstrumentationTestCase或者它的子类。Activity测试用例扩展了这个基类,增加了其他在activity测试中的辅助功能。

Assertion类

因为Android测试用例类是基于JUnit扩展的,所以你可以使用断言方法来显示测试结果。断言方法将返回的实际值与期望值比较,如果比较失败则抛出断言异常。使用断言比使用日志更方便,并且有更好的测试性能。

除了JUnit Assert类方法外,测试API还提供了MoreAsserts和ViewAsserts类:

MoreAsserts包含了更为强大的断言,如assertContainRegex(String, String),用来进行正则表达式匹配。

ViewAsserts包含有关Views的一些有用的断言。例如,包含了assertHasScreenCoordinates(View, View, int, int),用来测试一个View在可见的屏幕上是否具有特定的X和Y坐标位置。这些断言简化了UI的几何图形和定位测试。

Mock(虚拟)对象类

为了使测试中便于进行依赖注入,Android提供了一些类来创建虚拟系统对象,如Context对象、ContentProvider对象、ContentResolver对象和Service对象等。一些测试用例还提供了虚拟Intent对象。使用这些虚拟对象一方面可以不依赖系统进行独立测试,另一方面在测试中便于依赖注入。这些类可以在java包android.test和android.test.mock中找到。

虚拟对象类还便于依赖注入,通过提供一个非功能性的一般对象的子类,除了重写定义。例如,MockResources对象提供了Resources的一个子类,它里边的所有方法在调用的时候都抛出异常。要使用它,你只需要重写那些必须提供信息的方法。

以下这些是Android中可用的虚拟对象类:

Simple mock object类

MockApplication、MockContext、MockContentProvider、MockCursor、MockDialogInterface、MockPackageManager和MockResources提供了一个简单且有用的虚拟策略。他们是响应系统对象类的不完全版本,他们所有的方法被调用时都抛出UnsupportedOperationException异常。要使用它们,你就要重写你需要的方法来提供虚拟依赖关系。

注意:MockContentProvider和MockCursor是API level 8新增的。

Resolver虚拟对象

MockContentResolver通过掩盖正常的系统resolver框架来提供独立的contentProvider 测试。MockContentResolver不是用提供的authority字符串在系统中寻找contentProvider,

而是使用自己内部特有的表。你必须用addProvider(String, ContentProvider)方法明确的增加providers到这个表中。

基于这个特性,你可以将一个authority与一个虚拟contentProvider关联起来。你可以创建一个真正provider的实例但却能在里面使用测试数据。你甚至可以将一个authority对应的provider设置为null。实际上,MockContentResolver对象把你的测试从包含真是数据的provider中分隔出来。你可以控制provider的功能,并且可以阻止你的测试影响真是的数据。

用于测试的Contexts

Android为测试提供了两个Context类:

l IsolatedContext提供一个独立的Context、文件、目录和数据库操作。虽然他的功能受到限制,但是这个Context有足够的代码片段来响应系统的调用。

l 这个类允许你在不影响真实数据的情况下测试一个应用程序的数据操作。

l RenamingDelegatingContext提供了一个Context,在这个Context当中,大部分的功能有现有的Context来处理,但是文件和数据库操作则由IsolatedContext处理。被分离的部分使用一个测试目录和创建特定的文件和目录名。你可以自己控制命名,或者让构造器constructor自动决定。

这个对象提供了一个快速的方法来建立一个独立的数据操作区域,并且为其他所有的Context操作保留了正常的功能。

运行测试

测试用例由测试运行器类来运行,测试运行器类加载测试用例类、初始化、运行、销毁每个测试。Android测试运行器必须是被instrumented的,这样启动应用程序的系统工具就能控制测试包如何加载测试用例和应用程序。你在测试包的配置文件里告诉android平台用哪个instrumented了的测试运行器。

InstrumentationTestRunner是主要的Android测试运行器。他扩展了JUnit的测试运行器框架而且也是instrumented的。它能运行有Android提供的任何测试用例类,并且支持所有可能的测试类型。

你在测试包的配置文件里的元素中指定InstrumentationTestRunner或者他的子类。InstrumentationTestRunner代码是属于共享库android.test.runner的,而不是链接到android代码的。要包含他,你必须在元素中指定他。你不需要自己设置这些元素,Eclipse的ADT和android命令行工具会自动构建他们,把他们添加到你测试包里的配置文件中。

注意:如果你使用一个不是InstrumentationTestRunner的测试运行器,你必须修改元素,指定你想要使用的类。

要运行InstrumentationTestRunner,你要使用有Android工具调用的内置的系统类。当你在Eclipse ADT里运行测试时,这些类被自动调用。当你从命令行运行测试时,你用Android Debug Bridge(adb)来运行这些类。

系统类加载和启动测试包,结束所有正在运行将要测试应用程序的实例进程,并加载一个新的应用程序实例。然后他们把控制权交给InstrumentationTestRunner,让他来运行测试包里的每个测试用例类。你也可以控制哪个测试用例和方法将被运行,通过Eclipse的ADT 或者在命令行工具里使用标记。

系统类和InstrumentationTestRunner都不运行要测试的应用程序,而是有测试用例类直接运行应用程序的。它调用应用程序里的方法,或者是调用它自己的方法来触发应用程序的生命周期事件。应用程序在测试用例的完全控制之下,允许测试用例在运行测试前设置测试环境(the test fixture)。在前面的代码片段中已经展示了测试显示Spinner widget的activity。

学习更多有关运行测试的内容,请参看在Eclipse ADT里测试和在其他IDE里测试主题。

查看测试结果

Android测试框架将测试结果返回给启动测试的工具。如果你在Eclipse里用ADT运行测试,结果将被显示在一个新的JUnit view面板。如果你从命令行运行测试,结果将被显示在标准输出。在这两种情况下,你能看见测试摘要,摘要显示每个测试用例的名称和运行的方法。同时可以看见所有失败的断言。并且显示发生断言失败所在的代码行。断言失败也会列出期望值与实际值。

测试结果有一个格式,有你使用的IDE来指定。

monkey和monkeyrunner

SDK提供了两个工具来从功能层面上测试应用程序:

l UI/Application Exerciser Monkey,通常称为“monkey”,是一个命令行工具,向设备发送键盘输入、触摸和手势等随机事件。你可以用adb工具来运行他。用它来应用程序的压力测试并报告发生的错误。你可以通过运行该工具来重复一个相同随机速度的事件流。

l monkeyrunner工具是一个有Python编写的API和测试程序的执行环境。API包含了连接设备、安装和卸载包、截屏、比较两个图片和运行一个测试包等功能。使用这些API,你可以编写一个强大复杂的全面测试。你要用mokeyrunner命令行工具来运行使用这些API 的程序。

用包名来工作

在测试环境里,你用到Android应用程序包名和java包标识。两者使用相同的命名格式,但是他们代表着本质不同的实体。你需要知道这些区别才能正确的建立测试。

Android包名是一个唯一的.apk文件系统名,由包配置文件里元素的android:package属性来设置。你测试包Android包名必须与要测试应用程序的Android包名不同。默认地,Android工具通过在要测试的应用程序包名后面增加.test来创建测试包名。

测试包使用Android包名来定位要测试的应用程序包。这在测试包配置文件的元素的android:targetPackage属性中设置。

java包标识应用于源文件。这个包名映射源文件的目录路径。他同时也影响类和方法相互之间的可见性。

Andorid工具为你的测试项目创建一个Android测试包名。工具从你的输入建立测试包名和目标应用程序包名。要使工具得以工作,应用程序项目必须是已经存在的。

默认地,这些工具为测试类建立与Android包标识相同的Java包标识。如果你想应用程序的成员,是的他们包可见,可能会想要改变包名。如果你这样做,只需要改变java包标识不要去改变android包名,并且只需要改变测试用例的源文件。不要改变测试包里自动产生的R.java类的java包名,因为会于应用程序中的R.java类发生冲突。不要将测试包的Android包名改为与应用程序的Android包名一样,因为这样他们的名字在系统里就不唯一了。

android自动化测试之道

Android自动化测试之道 文/杨丰盛 随着越来越多的手机厂商、运营商、开发商加入android阵营,带来了各种美化和定制的android系统,同时android market应用数量增长迅速。这都离不开测试,android 自动化测试的需求愈加迫切。 测试主要分为白盒测试和黑盒测试两大类。Android虽然在测试方面还不够完善,但也提供了各种途径来完成相应的测试模块。白盒测试通常需要配合软件的源码来进行,测试人员须根据产品的功能和性能等需求编写测试用例,并根据测试用例逐一进行测试。这里我们主要探讨在没有源码的情况下如何进行黑盒测试。既然没有源码,那么我们就需要使用android所提供的工具包来获取应用程序上的各种UI元素,并向其发送各种操作事项。此外,我们还可以借助各种开源项目,比如ASE等。下面分别介绍几种目前最可行的自动化测试解决方案。 Android兼容性测试 Android的各个版本之间都有不同程度的差异,因此google专门针对各个版本(android2.1以上)提供了兼容性测试工具CTS(compatibility test suite),其中共有两万多个测试用例,包括功能测试和性能测试等。CTS最初只对OHA联盟开放,后来便和android开源项目一起发布了,并且所有手持设备都必须通过android兼容性测试,才能确保在android上开发的应用程序能够在android设备上运行,才能使用android market。 要使用CTS进行兼容性测试,就必须先下载和编译CTS,下载方式可以选择下载完整的android源码(位于$ANDROID/cts目录中)和只下载CTS源码(注:CTS源码下载地址为git://https://www.sodocs.net/doc/cc14020193.html,/platform/cts.git);然后可以使用如下命令来编译CTS: //配置选项 $ build/envsetup.sh //编译cts $ make cts 编译完成之后会将结果输出到“$ANDROID/out/host/linux-x86/”目录中,然后可以启动模拟器或手持设备(需使用root权限来操作),并进入其bin目录。使用“./cts” 命令来启动CTS测试,显示CTS测试版本和设备连接状态,这时可以输入“help”命令来查看CTS的操作帮助信息。 如果输入“ls--plan”命令可以查看所有的plan(注:plan文件夹为cts/android-cts/repository/plans),在其中可以看到8个测试基类,比如android.xml、appsecurity.xml、CTS.xml等。其中所有基类里包含的package都给出了相应的uri,cts 将根据这些uri去测试每个基类里的package,可以输入如下一些命令来测试某些

Android期末考试复习试卷(仅供参考)

一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是 Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是 Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做 Android 数据存储(A ) A SQlite B M ySql C Oracle D DB2 5、下列哪个可做EditText编辑框的提示信息( D ) A android:inputType B android:text C android:digits D android:hint 6、Math.ceil(99.1) 的结果是(B ) A 99 B 100 C 99.1 D 99.0 7、android 中下列属于Intent的作用的是(C) A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D处理一个应用程序整体性的工作 8、关于 res/raw 目录说确的是A A这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B这里的文件是原封不动的存储到设备上会转换为二进制的格式 C这里的文件最终以二进制的格式存储到指定的包中 D这里的文件最终不会以二进制的格式存储到指定的包中 9、Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C) A 11 ,-11 B 11 ,-12 C 12 ,-11 D 12 ,-12 10、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A ) A onDestroy() B onClear() C onFinish() D onStop() 二、填空题(10 分,共10 题,每空1 分) 1、为了使 android 适应不同分辨率机型,布局时字体单位应用( sp ),像素单位应用( sp )和(dip ) 2、定义 LinearLayout 水平方向布局时至少设置的三个属性: ( android:orientation), (android:layout width)和(android:layout height)

Android期末测试题(附带答案)

一、选择题 1、下列哪项不是Android四大组件( C ) A.Seivice B. Activity C. Handler D. Content Provider 2、Android是如何组织Activity的( B ) A.以堆的方式组织Activity B. 以栈的方式组织Activity C. 以树形方式组织Activity D. 以链式方式组织Activity 3、关于线程说法不正确的是( B ) A. 在 android 中,我们可以在主线程中,创建一个新的线程 B. 在创建的新线程中,它可以操作 UI 组件 C. 新线程可以和 Handler 共同使用 D. 创建的 Handler 对象,它隶属于创建它的线程 4、下列关于内存回收的说明,哪个是正确的(B ) A.程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 D.内存回收程序可以在指定的时间释放内存对象 5、设置xml布局文件中的字体大小一般用什么单位( c ) A.dp B. px C. sp D. pt 6、关于service生命周期的onCreate()和onStart()说法正确的是( D ) A.当第一次启动的时候先后调用onCreate()和onStart()方法 B.当第一次启动的时候只会调用onCreate()方法 C.如果service已经启动,将先后调用onCreate()和onStart()方法 D.如果service已经启动,只会执行onStart()方法,不再执行onCreate()方法 7、Android项目工程下面的assets目录,以下说法正确的是( A ) A.这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B.主要放置多媒体等数据文件 C.主要放置图片文件 D.放置字符串,颜色,数组等常量数据 8、在android中使用SQLiteOpenHelper这个辅助类,生成一个可操作的数据库,调用的方法是( A )A.getReadableDatabase() B.getDatabase() C.getEnbleDatabase() D.createDateBase() 9、Activity从可见状态变为半透明遮盖状态时,生命周期中哪个方法被调用( B )

Android测试环境搭建

基本安装 一、Java JDK 1、Java JDK下载: 网页: https://www.sodocs.net/doc/cc14020193.html,/javase/downloads/index.jsp 选择 Download JDK 只下载JDK,无需下载jre.(因为按照JDK会自动按照jre) 2、JDK 运行 可以不安装在C盘(系统盘) 安装完成后 3、环境变量 如果只是运行eclipse不需要修改环境变量 如果要用到monkeyrunner需要设置环境变量(改系统环境变量),如下 新建系统环境变量JAVA_HOME ,设置为java安装地址"D:\Program Files\java\jdk1.6.0_33" PATH 增加 ";%JAVA_HOME%\bin" CLASSPATH = ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar",没有CLASSPATH需要新增

4、验证环境变量 java-version 如果装在C盘直接运行java-version 二、Eclipse 进入该网页: https://www.sodocs.net/doc/cc14020193.html,/downloads/下载解压缩后放在根目录,不要放在中文文件夹里面三、Android SDK

地址:https://www.sodocs.net/doc/cc14020193.html,/sdk/index.html 说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,后一种大概20多M,前一种70多M。 解压android sdk 这个也无需安装,解压后供后面使用 Eclipse配置 一、安装android 开发插件 (1)打开Eclipse, 在菜单栏上选择 E:\eclipse-java-juno-win32-x86_64\eclipse下,可以创建桌面快捷方式help->Install New SoftWare 出现如下界面:

Android APP测试流程

Android APP测试流程 一、 Monkey测试(冒烟测试) 使用monkey测试工具进行如下操作: 1. APP的安装 2. APP随机操作测试(APP压力测试) 3. APP的卸载 二、安装卸载测试 1. 使用测试真机进行APP的安装与卸载 2. 使用第三方软件辅助安装与卸载

三、升级测试 1. APP的在线升级安装及使用测试 目的: 1. 验证签名是否一致 2. 跨版本升级是否正常 四、功能测试 1. 功能逻辑测试 2. 功能点测试(单元测试) 3. 关联性测试(集成测试) 五、自动化测试 1. monkeyrunner编写python脚本测试(现阶段使用小萝贝与按键精灵代替) 六、联机调试测试 1. 使用Eclipse进行Android Debug真机调试 2. 通过Logcat记录每一步操作,定位错误代码 七、稳定性测试 1. 交互性测试 2. 异常性测试(手机断电、断网情况) 八、手机流量、电量、内存测试

1. 测试机使用监控软件观察APP使用所耗的流量 2. 测试机使用监控软件观察APP耗电量 3. 测试机使用监控软件观察APP占用内存情况(不能泄露内存) 九、性能测试(Loadrunner) 1. 接口测试 2. 服务器压力测试 十、适配性测试(兼容性测试,目前使用testin云测) 1. 分辨率 2. 系统版本 3. 厂商定制系统 4. 屏幕尺寸 十一、界面易用性测试 1. 界面与交互测试(交互规范、用户体验、易用性等) 2. 可用性测试(可用性强、操作简单、出错率低、完成任务时间短等)十二、外网测试 1.使用WIFI和手机网络2G/3G/4G网络测试APP

android试卷A及答案

Android应用试卷A 一、选择题(10分) 1. 下列不是手机操作系统的是?(D) A.Android B. Window Mobile C. Apple IPhone IOS D. windows vista 2. 下列选项哪个不是Activity启动的方法?(B ) A. startActivity B. goToActivity C. startActivityForResult D. startActivityFromChild 3. 下列哪个不是Activity的生命周期方法之一?(B ) A. onCreate B startActivity C. onStart D. onResume 4. 下列哪个可做Android数据存储?( A ) A. SQlite B. MySql C. Oracle D. DB2 5. 下列哪个可做EditText编辑框的提示信息?( D ) A. android:inputType B. android:text C. android:digits D. android:hint 二、真空题(2分) 1. 为了使android适应不同分辨率机型,布局时字体单位应用sp ,像素单位应用sp 和dip 。 2. 定义LinearLayout水平方向布局时至少设置的三个属性: android:orientation ,android:layout_width 和android:layout_height 。 3. 设置 ImageView控件为灰色的方法是:android:background=”#040” 。 4. layout布局文件的命名不能出现字母大写。 5. 设置EditText只能输入”1234567890.+-*/%()”属性:android:digits 。 6. 设置TextView字体的属性是:android:textSize 。 三、简答题(30分) 1. Android项目中的入口Activity怎么写?如何注册一般的Activity? (1) Android项目中的入口Activity:

Android性能分析工具常用汇总

Android性能分析工具常用汇总 Android性能分析工具整理汇总 把做Android开发以来碰到的一些不错的性能分析工具做个整理汇总... Debug GPU Overdraw 类型:系统自带功能UI渲染检测功能(打开Settings,然后到Developer Op tions -> Debug GPU Overdraw 选择Show overdraw areas,手机系统设置中文的孩纸,自行对照翻译进去哈) 作用:用来检测UI的重绘次数,开发者可以用来优化UI的性能。 使用心得:检测UI性能的利器,对于开发者做UI优化的帮助挺大的。因为大量的重绘容易让app造成卡顿或者直接导致丢帧的现象。开发者熟悉View的绘制原理可以结合对一些布局或者自定义控件做相应的优化。诸如:在ListView或GridView里面的item使用layout_weight设置就会造成多余重绘。其他情况还有很多,不一一例举。至于怎么用,可以自行Google Profile GPU Rendering 类型:系统自带功能UI渲染检测功能(打开Settings,然后到Developer Op tions -> Profile GPU Rendering. 选择On screen as bars ) 作用:用来检测UI绘制帧的速率和耗时,同样开发者可以用来优化UI的性能。使用心得:跟Debug GPU Overdraw功能类似,但它反应的是UI绘制帧的速率,同样可以用来检测自己的app是否丢帧或者绘制过度,具体操作可以自行G oogle Hierarchy Viewer 类型:SDK自带工具(打开Settings,然后到Developer Options -> Profil e GPU Rendering. 选择On screen as bars ) 作用:检测UI渲染用的 使用心得:老牌工具了,Google一下

(完整版)Android应用开发期末考试题

试题 一、选择题 1 android虚拟设备的缩写是(AVD) 2 Android SDK目前支持的操作系统(DOS) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 6以下不是Android中调试项目的正确步骤(测试用例) 7下列不是Activity的生命周期方法之一的是(OnResume) 8以下可以做EditText编辑框的提示信息是(adroid:hint) 9以下不是Activity启动的方法是(gotoActivity) 10以下不是手机操作系统的是(windows vista) 二、填空题 1 Android平台由操作系统,中间件,用户界面和应用软件组成的。 2 Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器 3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发 5 Android SDK主要以java语言为基础 6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字

7 Android.jar是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API 三、简答题 1 Android SDK中API的包结构的划分?至少五个 android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构自上而下可分为哪些层? 应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS) 3 Android应用程序的4大组件是什么? Activity、Broadcast Intent Receiver、Service、Content Provider 4 Android应用工程文件结构有哪些? 源文件(包含Activity),R.java文件,Android Library,assets目录res目录,drawble目录,layout目录,values目录,AndroidManifest.xml 5 Android开发应用程序最有可能使用到的应用框架部分是哪些? 一组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger 6 Android底层库包含哪些? 系统C库,媒体库,Surface Manager,LibWebCore,SGL 四、编程 1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码 Bundle bundle = new Bundle ( ); Bundle.putString(“store”,”数据来自Activity1”) ;

Android基础阶段 测试题

一、选择题(每题2分,共20分) 1.给定java代码,如下: public byte count(byte b1,byte b2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项)a)(byte) (b1-b2) b)(byte) b1-b2 c) b1-b2 d) (byte) b1/b2 2.在Java中,下列()语句不能通过编译。 (选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; c) int a= 3+5 d) float f=5+5.5; 3.给定如下java代码,编译运行之后,将会输出()。 public class Test{ public staticvoid main(String args[]){ int a=5; System.out.println(a%2==1) ?(a+1) /2:a/2) ; } } a)1 b)2 c)2.5 d)3 4. 有关线程的哪些叙述是对的?( ) A、当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。 B、使用Start()方法可以使一个线程成为可运行的,但它不一定立即开始运行。 C、一个线程可能因为不同的原因停止并进入就绪状态。 D、一旦一个线程被创建,它立即开始运行。 5.下列属于Intent的作用的是( ) A、实现应用程序间的数据共享

B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 6.关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(String argv[]){ System.out.println(i); } } A、有错误,变量i没有初始化。 B、null C、1 D、0 7.下列属于SAX解析xml文件的优点的是() A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会 消失 8.下列哪些语句关于内存回收的说明是正确的? ( ) A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 9.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的是() A、 B、

Android测试教程(全)

Android测试教程 目录 Android测试教程 (1) Android测试教程(1):概述 (1) Android测试教程(2):测试基础 (2) Android测试教程(3):测试项目 (3) Android测试教程(4):测试相关API (6) Android测试教程(5):第一个测试项目HelloWorldTest (8) Android测试教程(6):测试Activity (11) Android测试教程(7):测试Content Provider (12) Android测试教程(8):测试Service (13) Android测试教程(9):ApplicationTestCase示例 (13) Android测试教程(10):ActivityInstrumentationTestCase2示例 (17) Android测试教程(11):ActivityUnitTestCase示例 (18) Android测试教程(12):ServiceTestCase示例 (20) Android测试教程(13):TestCase示例 (22) Android测试教程(14):ActivityInstrumentationTestCase2示例 (23) Android测试教程(15):AndroidTestCase示例 (25) Android测试教程(16):monkeyrunner简介 (27) Android测试教程(17):Monkey 命令行工具 (28) Android测试教程(18):总结 (32) 来源: csdn 作者:mapdigit Android测试教程(1):概述 测试也是开发过程中一个重要组成部分,Android开发环境集成一个测试框架可以用来测试Android应用的各个方面,单元测试,UI测试等。 本教程基于Android 开发教程英文版。 基本概念包括 ?Android测试的基础知识 ?Activity Testing 侧重于Activity的测试,介绍了如果使用Instrumentation 在正常Activity生命周期之外来控制Activity,然后测试Activity的特定的功能和测试UI 的一些技巧。

Android练习题及答案

练习题 一、选择题 1. 下面哪个属于体系结构中的应用程序?( ) (A) (B) (C)浏览器(D) 2. 应用程序需要打包成( )文件格式在手机上安装运行。 (A) (B) (C) (D) 3. 在的生命周期中,当被某个覆盖掉一部分后,会处于哪种状态?( ) (A) 暂停(B) 活动(C) 停止(D) 销毁 4. 中下列属于的作用的是( )。 (A) 实现应用程序间的数据共享() (B) 是一段长的生命周期,没有用户界面的程序,可以保持在后台运行,而不会因为切换页面而消失() (C) 可以实现界面间的切换,可以包含动作和动作数据,是连接4大组件的纽带 (D) 处理一个应用程序整体性的工作 5. 项目启动时最先加载的是文件,如果有多个,以下哪个属性决定了该最先被加载?( )。 (A) (B)(没有) (C) (D) 6. 如果需要捕捉某个组件的事件,需要为该组件创建( ) (A)属性(B)监听器(C)方法(D)工程 7.关于描述正确的是( )。 (A)该布局为绝对布局,可以自定义控件的的位置 (B)该布局为切换帧布局,可实现标签切换的功能 (C)该布局为相对布局,其中控件的位置都是相对位置

(D)该布局为表格布局,需要配合一起使用 8.关于的说法不正确的是 ( )。 (A)它实现不同进程间通信的一种机制(B)它采用队列的方式来存储 (C)既是消息的发送者也是消息的处理者(D) 它实现不同线程间通信的一种机制 9. 下列哪种不是的存储方式?( ) (A) (B) (C) (D) 10. 下列关于的描述,不正确的是 ( )。 (A)是系统的后台服务组件,适用于开发无界面、长时间运行的应用功能 (B)比的优先级高,不会轻易被系统终止 (C)有两种不同的使用方式,一种是以启动方式使用,另一种是以绑定方式使用 (D)每个服务都继承自基类 二、填空题 1. 目前,常见的智能手机操作系统有、和等。 2第一次被创建的时候调用的方法是()。 3.为了使系统适应不同分辨率机型,布局时使用的字体和像素单位分别是 和。 4支持的4大重要组件,分别是、、和。 5. 4.0中提供了5种布局管理器:、、、和。 6类不能直接使用关键字来创建类的对象实例,而是首先创建其内部 类类的对象,再调用这个内部类的()方法来显示对话框。

Android移动应用试题(带答案)

<>试题 一.选择题(2’X12) 1.下面哪一个不属于Android体系结构中的应用程序层 A.电话簿 B.日历 C.SQLite D.SMS程序 2.下面哪种说法不正确 A.Android应用的gen目录下的R.java被删除后还能自动生成; B.res目录是一个特殊目录,包含了应用程序的全部资源,命名规则可以支持数字(0-9) 下横线(_),大小写字母(a-z , A-Z); C.AndroidManifest.xml文件是每个Android项目必须有的,是项目应用的全局描述。其 中指定程序的包名(pack age=”…”)+指定android应用的某个组件的名字(android:name=”…”)组成了该组件类的完整路径 D.assets和res目录都能存放资源文件,但是与res不同的是assets支持任意深度的子目 录,在它里面的文件不会在R.java里生成任何资源ID 3.在一个相对布局中怎样使一个控件居中 A.android:gravity="center" B.android:layout_gravity="center" C.android:layout_centerInParent="true" D.android:scaleType="center" 4.下面是一段生成对话框的代码,哪一行有错误? Builder builder = new Builder(getApplicationContext()); 1 builder.setTitle("提示").setMessage("请选择"); 2 builder.setPositiveButton("重置", new OnClickListener() 3 { 4 public void onClick(DialogInterface dialog, int which) 5 { 6 Log.i("log", "重置被按了!"); 7 } 8 }); 9 builder.setNegativeButton("取消", null); 10 builder.setNeutralButton("确定", new OnClickListener() 11 { 12 public void onClick(DialogInterface dialog, int which) 13 { 14 Toast.makeText(getApplicationContext(), "确定被按了!", 15 Toast.LENGTH_SHORT).show(); 16 } 17

Android手机测试环境搭建

Android手机测试环境搭建 Android手机测试环境目前包含3个部分ADB调试环境、QPST和QXDM,手机驱动 1.手机驱动安装 确保手机开启应用程序中的USB调试,使用数据线将手机连接至PC,PC我的电脑中会出现HSInstall的虚拟光盘,若电脑未弹出自动安装提示,则请双击HSInstall光盘,点击安装AutoRun.exe,一直点击下一步直至提示安装完成需要重启,重启计算机后,右键点击我的电脑-管理-设备管理器,会出现如图所示的端口 若有没出现的端口,则请在我的电脑中右键点击HSInstall,选择弹出按钮,设备管理器中就会显示如上图所示的端口 2.ADB调试环境安装 首先安装JDK环境,打开JDK安装程序一直点击下一步直至提示安装完成; 其次安装Android SDK,也是打开安装程序一直点击下一步直至提示安装完成; 安装完成后在开始->所以程序->Android SDK Tool下打开SDK Manager,界面如下:

第一次启动时,上图界面中Android SDK tools和Android SDK Platform-tools可能均显示为Not installed,勾选这两项后,点击界面右下角的Install 2 package,等待程序下载并安装完成这两项。 将1.0.26版本的adb.exe程序复制到C:\Program Files\Android\android-sdk\platform-tools和C:\Program Files\Android\android-sdk\tools两个目录下。 最后配置环境变量,右键点击“我的电脑”->属性->高级->环境变量,打开如下界面: 在界面中系统变量下找到Path选项并双击,在弹出窗口中输入如下 ;C:\Program Files\Android\android-sdk\platform-tools;C:\Program Files\Android\android-sdk\tools(其中开头和中间的分号请输入英文的分号),最后点击一直点击确定保存环境变量配置。 最后需要验证ADB调试环境是否安装完成,操作如下 开始->运行->输入cmd,进入命令行模式直接输入adb点击回车,查看界面中是否出现大量adb命令的相关英文帮助信息(若出现说明adb环境初步安装成功,若提示无法找到AdbWinApi.dll则请通过网络搜索直接下载该文件分别拷贝至之前出现的tools和platform-tools以及C:\Windows\system32目录下); 继续验证,在android手机中,进入点击menu->设置->应用程序->开发,勾选USB调试选项,在cmd命令行模式继续输入adb devices命令,查看是否正确显示连接的手机信息,若显示则说明adb彻底配置完成. 3.QPST、QXDM安装配置 安装前请关闭杀毒软件等安全类软件,QPST安装时点击安装文件的

Android应用软件开发高级工程师考试试题

CEAC国家信息化中心计算机教育认证 (Android应用软件开发高级工程师) 考试试卷(综合) 姓名__________身份证号_______________成绩__________ 单选题 1:以下哪个不是Adapter的子类接口?( 1 分)( ) A:ListAdatper B:SpinnerAdapter C:WrapperListAdapter D:SimpleAdatper 2:定义字符串:String str=”abcdefg”;则str.indexOf(‘d’)的结果是()。(1 分) A:‘d’B:true C: 3 D:4 3:下面关于包的说明正确的是()。( 1 分) A:包把相关的类组织在一个目录下,便于引用 B:只有public 类才能放到包中 C:不同源文件中的类不能放到同一个包中 D:包的申明必须放到程序的第一行 4:一维数组arr,如何获取其数组元素数量()。( 1 分) A:arr.size B:arr.size-1 C:arr.length-1 D:arr.length 5: Android应用程序的四大组件是指()。( 2 分) A:Activity、Dialog、Service和Intent B:Activity、Service、BroadCast Receiver和Content Provider C:Activity、Service、BroadCast Receiver和Intent D:Activity、Dialog、Service和Content Provider

6下面哪个方法不属于InputStream类?( 2 分)( ) A:int read(byte[]) B:void flush() C:int read() D:void close() 7:给定下列代码: public class Person{ static int arr[]=new int[10]; public static void main(String a[]){ System.out.println(arr[1]); } } 下列说法正确的有()。( 2 分) A:编译时程序将发生错误 B:编译时程序正确但是运行时出错 C:输出为0 D:输出为null 8:访问Student类中的number成员之值哪种方式正确?()class Student{ private static int number=1; public static int getNumber(){ return number; } } ( 2 分) A:Student.number; B:new student().number; C:Student.getNumber(); D:new student().getnumber(); 9:Activity中onCreate(Bundle savedInstanceState)方法中的参数为saveInstanceState,关于saveInstanceState的错误的描述是()。( 2 分) A:saveInstanceState参数采用key-value的形式存储数据 B:saveInstanceState保存的是Activity的实例状态

android手机测试总结(笔记)

2012年3月21日 系统测试(非功能性测试) 1、适配性测试 a) 手机的型号 b) 网络通信情况(2G\3G\WIFI\飞行模式、NET\WAP、中国电信、移动、联通) c) Android的版本号(Android 4.0、Android 2.3、Android 2.2、Android 2.1)主要是2.2\2. 3.*\ 4.0 d) 屏幕的分辨率(1280×720、960×640、960×540、854×480、800×480、640×480、640×360、480×360、480×320、400×240、320×240、220×176、) 2、功能模块测试(功能性测试) a) 根据预先编写的测试用例测试 3、异常测试(手机交互性事件) a) *按键打断,如:电源键、home键、音量键、返回键等;插拔数据线 b) 其他程序后台相互切换

c) *网络切换(2G\3G\WIFI\飞行模式、NET\WAP、中国电信、移动、联通、) d) 待机后是否能恢复程序和网络 e) 短信、电话和闹铃 f) 安装、覆盖安装和卸载 g) 有无SIM卡、有无SD卡 4、编写帮助文档或使用说明 2012-6-28 用户体验测试 1、界面 ①文字错误、图片不显示或显示不正确、缺少输入项、按钮的大小和点击效果 ②布局、图片和配色设计问题,测试人员很难进入 ③提示信息,提示信息语言准确简洁,有指导性。在应该提示的位置放入提示信息,比如程序需要接入网络,在无网络的情况下应给予提示 ④提示信息,提示信息的方式有很多,大概有弹出式和非弹出式两种,根据实际情况来区分

⑤阅读性,手机因输入方式和屏幕大小限时,目前以阅读为主要(除聊天软件),做好阅读是关键。文字字体、大小、颜色和背景颜色可调整,夜间模式 ⑥简洁,看看any.do就知道什么是简洁了,如穿着白纱美女的油画一般 ⑦输入法,输入法不能挡住输入框;回车可以跳转到下一个输入框 2、稳定性 ①网络,需要访问网络的程序,在网络不稳定的情况下,应能正常运行,不应出现意外退出和错误;如程序无法在该环境下运行,应提示用户 ②网络切换,同上 ③网络信号弱,同上 ④进程切换,在多进程切换中,应正常运行,并保持切换前页面,不应出现意外退出和错误 3、性能 ①程序进行某些功能时,不应使手机出现卡、顿等情况,视实际情况而定 4、安装 ①路径,可选择手机、SD卡

android开发试卷

一、选择题(本大题共20题,每题2分,共40,不写多选为单选)。 注意:请把答案填入答题纸的相应位置上,否则不得分! 1.在activity_main.xml中,定义一个组件时,有两个属性必须写( )(多选) A、A android:layout_width B、B android:layout_height C、C android:id="@+id/start" D、D android:text 2.微信app安装一般会申请如下权限( ) (多选) A、读取地位位置信息 B、读取通讯录 C、读取短信 D、发送通知 3.android常见三种数据存储与访问的方式()(多选) A、文件 B、数据库 C、sharedpreference D、内容提供者 4.下列哪些api的操作需要声明权限()(多选) A、播放声音 B、写SD卡(读sd卡状态) C、发短信 D、打电话 5.LBS定位技术的描述的是( )(多选) A、大部分联网app需要申请LBS权限 B、地图导航中需要用到该技术 C、GPS无信号的情况下LBS功能不能用。 D、Wifi无线即使没有连接也能改善LBS定位的精度 6.以下那个一般用来用来显示图片widget是( ) A、ImageView B、TextView C、Button D、Spinner 7.Android的activity中,一般代码在练习的时候写在了()函数中 a)onCreate b)onStart c)onStop d)onDestory 8.Android开发中常用的数据库是: a)SQL Server b)MySQL c)SQLite d)Oracle 9.以下调整宽度和高度的属性,哪个不是Android系统提供的? a)Match_parent b)Wrap_content c)Fill_content d)Fill_parent 10.从其他应用中读取共享的数据库数据,需要用到的是query方法,返回Cursor数据,那么这 个方法是哪个对象的方法? a)ContentProvider b)ContentResolver c)SQLiteOpenHelper d)SQLiteDataBase 11.常见可用的推送技术提供者包括(多选) a)阿里云推送 b)百度云推送 c)极光推送 d)腾讯推送 12.Android项目中assets目录的作用是什么? a)放置字符串,颜色等信息 b)放置图片资源 c)放置较大的文件资源 d)放置界面布局配置 13.以下哪个对象是自定义组件中用来绘制内容的对象 a)Bitmap b)Canvas c)BufferedImage d)Drawable 14.以下属性中哪个属性是LinearLayout拥有但RelativeLayout没有的属性 a)android:layout_width b)android:layout_height c)android:layout_weight d)android:background 15.启动activity对一些资源以及状态的读取,可以在生命周期的哪个函数中进行( ) A、onPause() B、onCreate() C、onResume() D、onStart() 16.Activity生命周期的最初执行 A、onCreate B、onPause 17.onPause什么时候调用( ) A.当界面启动时 B.当onCreate方法被执行之后 C.当界面被隐藏时 D.当界面重新显示时 18.关于适配器的说法正确的有( ) A.它主要是用来存储数据 B.它主要用来把数据绑定到组件上

Android自动化测试工具简介

Android自动化测试工具简介随着Android的流行和发展,基于Android的应用开发越来越多,相应的测试方法和测试工具也越来越多,掌握好这些测试工具对测试团队提高工作效率有很大的帮助,本文将就Android平台上的几款常用的测试工具进行简单介绍。Instrumentation Instrumentation是Android系统提供的基于junit的自动化单元测试框架,它提供了对Android系统API和对象的访问接口,可以控制和检查应用程序、模拟用户操作、获取系统状态,实现对应用程序或系统的功能、性能、UI、API 等的自动化测试。Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。 图1:引用自:

https://www.sodocs.net/doc/cc14020193.html,/guide/topics/testing/testing_android.html 1)测试类型 要对Android应用程序进行单元测试有三种方法: 第一,基于Junit的单元测试,这个测试运行在JDK下,测试一些和android 无关的东西,比如业务逻辑,数据封装,数值计算等等。 第二,基于AndroidTestCase,不使用Instrumentation框架,但可以访问系统对象如Context,通过Context可以访问到资源,文件,数据库等。 第三,基于InstrumentationTestCase,使用Instrumentation框架,入口是InstrumentationTestRunner,这是一个没有图形界面的,具有启动能力的,用于监控其他类的工具类。 2)主要测试类 Android系统的单元测试框架位于包android.test中,其核心类图具有如下结构:

相关主题