Android测试教程(全)

Android测试教程(全)
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 的一些技巧。

?Content Provider Testing 侧重测试Content Provider。

?Service Testing 侧重测试Service。

?需要测试的内容等。

以及在Eclipse ADT开发环境下如何创建一个测试项目和Android开发工具提供的一些测试工具。在阅读本测试教程之前,你需要有Android开发的一些基本知识,可以参见Android开发教程,此外需要了解一些JUnit的基本概念。

并对ApiDemo中的测试示例进行解析。

Android测试教程(2):测试基础

Android测试框架(Android Testing Framework)为Android开发环境的一个组成部分,可以用来测试Android的各个方面,从单元测试到框架测试到UI测试等。

其主要功能有:

?Android测试框架基于JUnit,因此可以直接使用JUnit 来测试一些与Android平台不是很相关的类,或者使用Android的JUint 扩展来测试Android组件,如果你刚开始接触Android 测试,可以先从AndroidTestCase写一些通用的测试用例,然后再写较复杂的测试用例。

?Android JUint 扩展提供了对Android特定组件(如Activity,Service)的测试支持,这些扩展类提供了一些辅助方法来帮助创建测试使用的“桩”类或方法。

?创建的测试包包含中一个测试包中,这个测试包和主应用程序包具有类似的结构,创建测试包的步骤和创建Android应用的方法基本类似。

?Eclipse的ADT包含了创建测试用例的SDK工具,并提供用于和其它IDE集成的命令行工具。这些工具可以从被测试的应用程序包读取所需信息用于创建测试项目的build 文件,mainfest 文件和文件目录结构等。

?SDK也提供了一个moneyrunner (一个python应用)可以模拟用户按键事件来测试UI。

下图为Android测试框架的一个总结:

Android测试教程(3):测试项目

Android的编译和测试工具需要测试项目组织符合预订的结构:分别为Test case 类,Test case 包以及测试项目。

JUnit 为Android的测试的基础,一般来说,一个JUint测试为一个用来测试一个应用某一部分的语句。你可以将多个测试Test方法组织起来构成一个测试用例(Test case),多个测试用例可以构成Test Suites 。每个Test方法相对独立,一个测试类Test class 包含一组相关的Test 或其它辅助方法。

在Android平台上,你可以使用测试工具调入Test Package和所要测试的应用,然后执行Test Runner来运行测试用例。

使用Eclipse ADT 工具创建测试项目的方法:

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 (注意你要先创建ApiDemosAndroid ApiDemos示例解析(1):创建ApiDemo示例)将ApiDemos->tests 和ApiDemos 关联起来:

修改ApiDemos->tests 测试项目的属性,在Java Build Path 的项目Projects 中添加ApiDemos

你最好使Eclipse 工具创建测试项目:

?自动为你的测试项目设置使用InstrumentationTestRunner 作为运行Test Package 的Test Runner,测试项目必须使用InstrumentationTestRunner 或其子类做为Test Package的runner.

?为测试项目创建合适的项目名称和测试包名称,比如你需要测试的应用的包名称为com.mydomain.myapp 则自动创建的测试包名为com.mydomain.myapp.test ,从测试包名可以很容易找到对应的应用程序包名称。

?自动创建合适的build 文件,mainifest 文件和文件目录结构。

建议使用的文件目录结构可以如下所示:

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)

Android测试教程(4):测试相关API

Android的测试框架相关的API主要定义在三个包中:

?android.test 用于编写Android测试用例

?android.test.mock 定义了方便测试用的测试“桩”类

?android.test.suitebuilder 运行测试用例的Test Runner类

Android 测试API 是基于JUnit 扩展而来,并添加了与Android平台相关的测试API。

JUnit

你可以直接使用JUnit中相关API编写一些和平台无关的测试用例(基于TestCase), Android 测试API中提供了一个TestCase的子类AndroidTestCase ,可以用来编写一些Android相关的对象的测试用例,AndroidTestCase 支持一些和平台相关的setup,teardown 以及setup 方法。

你也可以直接使用JUnit 的Assert 方法显示测试结果,这些Assert方法可以通过比较预期的值和实际的值,如果不同可以排除异常。Android 测试API扩展了一些Assert 方法用于支持和Android平台相关的比较。

要注意的是,Android 测试API支持JUnit 3 代码风格,而不支持JUnit 4 代码风格,也只能使用InstrumentationTestRunner 来运行测试用例。

Instrumentation

Android 的Instrumentation 提供了一些“钩子”方法连接到Android操作系统中,可以独立控制Android组件(Activity,Service等)的生命周期,并可以控制Android如何调用一个应用。

在通常情况下(普通的Android应用),Android的activity,Service等的生命周期是由

Android操作系统来控制的。比如一个Activity 的生命周期开始于onCreate (由某个Intent激活),然后是onResume. 可以参见Android简明开发教程五:Activities。应用程序本身无法直接控制这些生命周期状态的切换。但使用Instrumatation API时你可以直接调用这些方法。

Instrumentation API 也可以支持强制某个应用和另一个已经在运作的应用运行在同

一个进程中,这在通常的情况下是不可能实现的。

使用Instrumentation API 你可以直接调用Activity或是Service的生命周期回调函数,从而可以让你运行一步一步的运行Activity或是Service的生命周期函数。如下例显

示了如何使用Instrumentation API来测试Activity 保持和恢复State。

// 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(),只有调用getActivity()后被测试的activity 才会启动。此外Instrumentation API允许把测试项目和被测试的应用项目运行到同一个进程中,从而在测试代码中可以直接调用被测试应用的方法和访问其成员。

Test case 相关类

Android提供了多个由Testcase或Assert派生而来的子类以支持Android平台相关的setup,teardown 和其它辅助方法。

AndroidTestCase 为一Android平台下通用的测试类,它支持所有JUnit的Assert方法和标准的setUp 和tearDown 方法,并可以用来测试Android permission 。

组件相关的测试类如测试activity, Content provider ,Service 相关的测试类,Android没有提供单独的用来测试BroadcastReceiver 的测试类,而是可以通过发送Intent 对象来检测Broadcast Receiver的反应结果来测试BroadcastReceiver。

ApplicationTestCase 可以用来测试Application 对象。

InstrumentationTestCase 如果你要使用Instrumentation API,那么你必须使用InstrumentationTestCase或其子类。

Assertion classes

Android测试中可以使用JUnit中提供的Assert方法来显示测试结果。除此之外,Testing API还提供了MoreAsserts 和ViewAsserts 类。其中MoreAsserts支持更多的比较方法包括RegEx(正则)比较等。ViewAsserts 可以用来校验UI View。

Mock object classes

android.test.mock 包中定义一些测试“桩”类,如MockApplication,MockContentProvider ,MockContext,MockCursor, MockPackagManager等用例帮助测试。

后面将具体介绍如何使用这些API来编写测试用例。

Android测试教程(5):第一个测试项目HelloWorldTest

本例介绍创建一个测试项目的一般步骤和编写测试用例的基本方法。

为简单起见,创建一个HelloWorld应用,带有一个Greeting类,其定义如下:public class Greeting {

private String name;

public Greeting(String name){

https://www.360docs.net/doc/389334220.html,=name;

}

public String getGreetings(){

return "Hello," +name;

}

}

测试项目打算来测试这个Greeting 类的getGreetings的方法,比如说,创建Greeting(“World”) ,预期的getGreetings 的值应为”Hello,World”。我们可以使用JUnit框架来编写一个测试用例。

这里我们在创建HelloWorld的项目的同时创建一个测试项目,参见Android测试教程(3):测试项目

可以看到新创建的测试项目名称为HelloWorldTest ,并在src 中创建了

com.pstreets.demo.test 文件夹(和HelloWorld 应用的com.pstreets.demo 包相对应)。但src 还没有任何代码。

可以看到HelloWorldTest 属性的Java Build Path-> Projects 中引用的Project为HelloWorld, 表示在HelloWorldTest 项目中可以引用HelloWorld 项目中的类。

然后在HelloWorldTest的src 的com.pstreets.demo.test 中添加一个

AllTests.java,其定义如下:

public class AllTests extends TestSuite {

public static Test suite() {

return new TestSuiteBuilder(AllTests.class)

.includeAllPackagesUnderHere()

.build();

}

}

AllTests.java 一般可以不用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder 的类定义那些Testcase 需要包含到最终的测试包(Test Suite)中.

定义了AllTests.java ,这个测试项目就基本完整了,也可以运行了,只是还没有定义任何测试用例(Test case) 。

这里定义一个GreetingTest ,用于测试Greeting 类:

public class GreetingTest extends TestCase {

Greeting greeting;

@Override

public void setUp(){

greeting=new Greeting("World");

}

@Override

public void tearDown(){

}

public void testGetGreeting() {

assertTrue(greeting.getGreetings()

.compareToIgnoreCase("Hello,World")==0);

}

}

其实对于与这个例子setUp和tearDown 不是必须的,如果多个TestCase 使用同一组测试数据,可以在setUp 中创建这些测试数据,JUnit 中运行每个TestCase 前会运行setUp ,运行TestCase 后会执行tearDown 。

JUnit 把以test开头的方法作为一个实例,也可以使用annotation @Test 表示一个方法为测试方法。

GreetingTest 由TestCase 派生,因为这里测试是一个普通Java类(和Android 平台无关),也可以使用AndroidTestCase 作为基类。

testGetGreeting 使用assertTrue 来检测测试结果,预期的getGreetings()的值为”Hello,World” ,如果为true ,表示测试通过。

以Android JUint Test 的方式运行HelloWorldTest

运行HelloWorldTest 时,Android测试环境会自动启动HelloWorld ,并在JUint 窗口显示最终测试结果。

在开发应用过程中,可以一边编写应用,一边编写测试用例。

Android测试教程(6):测试Activity

Activity的测试非常依赖于Android的Instrumation 框架,和Android其他组件不同的是,Activity具有复杂的生命周期回调函数(如onCreate, onStart 等) ,通常情况下除通过Instrumation 接口外不能直接调用这些回调函数。

?测试Activity的基本测试类为InstrumentationTestCase,它提供了Instrumentation接口给TestCase的子类。为了支持Activity测试,InstrumentationTestCase提供了下面功能:

?生命周期控制:使用Instrumentation,你可以启动,暂停,中止被测试的Activity。

?Dependency Injection : Instrumentation允许创建一些Mock对象如Context,Application来帮助测试Activity,从而帮助你控制测试环境并和实际的应用的其他部分隔离开来。你也可以定制一些Intent以启动Activity。

?用户界面交互:你可以使用Instrumentation向UI发送按键和触摸事件。

下面几个为主要的用于测试Activity由TestCase派生而来的测试类:

?ActivityInstrumentationTestCase2 通常用于多个Activity的功能测试,它使用正常的系统框架来运行Activity(使用应用程序本身),并使用正常系统Context (非Mock)来测试Activity的功能。允许你创建一些Mock Intent 用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。

?ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。

?SingleLaunchActivityTestCase 用于测试单个Activity,和ActivityUnitTestCase不同的是,它只运行setUp 和tearDown 一次,而不是在运行testCase 中每个Test Method前后运行setup 和tearDown ,它可以保证运行多个测试之间fixture 不会被重置,从而可以用来测试一些有关联的方法。

本篇和后面几篇介绍Activity,Service,Content Provider 测试的基本概念和相关类,之后则结合ApiDemo->Tests 为例具体介绍这些类的用法。

Android测试教程(7):测试Content Provider

Content Provider 为不同的应用访问数据提供了统一的接口,本篇介绍Android测试包中用于测试Content Provider 的相关知识。

Android 测试包中用于测试Content Provider的基本类为ProviderTestCase2, 允许你在一个隔离环境下来测试Content Provider。并提供了一些Mock类如IsolatedContext ,MockContentResover 来辅助测试。

和其它测试一样,对于Content Provider测试也是通过InstrumentationTestRunner 来进行的。

编译测试代码的一般方法是通过派生ProviderTestCase2 (为AndroidTestCase 的子类),因此可以使用JUnit和Android平台相关的方法来测试Content Provider。

可以参见后面的实例来了解如何测试Content Provider。

Android测试教程(8):测试Service

Android 测试框架也提供对Service测试的支持,基本类为ServiceTestCase,因为Service类通常假定和它是和Client是分开使用的,因此你可以无需使用Instrumentation 来测试Service。

当你设计一个Service时,你应该考虑测试用例中如何检查Service的当前状态,比如你在onCreate ,onStartCommand 中启动一个Service,一般没有一个全局变量来表示Service是否成功,你可能需要自己定义一个全局变量用于测试用例中。

ServiceTestCase 中提供getService() 可以取得当前被测试的Service对象。

ServiceTestCase 为AndroidTestCase的子类,因此可以测试和Permission 相关的功能,并提供Mock的Application 和Context 对象为测试Service提供了一个隔离的测试环境。

Android测试教程(9):ApplicationTestCase示例

前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例。在此之前可以参照Android测试教程(3):测试项目创建ApiDemos->tests 测试项目,本项目测试用来测试ApiDemos,主要目的是介绍Android测试框架的使用方法。

当然要测试ApiDemos,事先要创建好项目ApiDemos。下图显示了创建好

ApiDemos->Tests后,ApiDemos->Tests中所含的Java类:

Android测试项目也是一个Android应用项目,其基本使用方法和开发一般的Android 应用非常类似,Android测试项目主要是利用Android测试框架编写测试用例来测试对应的Android应用的各个方面。

其中AllTests.java 定义如下:

public class AllTests extends TestSuite {

public static Test suite() {

return new TestSuiteBuilder(AllTests.class)

.includeAllPackagesUnderHere()

.build();

}

}

使用TestSuiteBuilder 指明所有该包和其子包中定义的TestCase都为最终TestSuite 的一部分(需要被运行的测试)。

AllTests.java 一般可以不用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder 的类定义那些Testcase 需要包含到最终的测试包(Test Suite)中.

ApiDemosApplicationTests 测试介绍ApplicationTestCase的基本使用方法。

下图为ApplicationTestCase 的继承关系:

ApplicationTestCase 主要用来测试Application 类,提供了对Application类生命周期方法的基本支持,并可以支持一些dependency injection 以帮助构造测试Application 的的环境。

Application Lifecycle 支持,每个Application运行都遵循一定的顺序(生命周期方法),ApplicationTestCase提供下面方法来支持对Application生命周期方法的测试:?只有当测试用例调用createApplication()后才会执行Application 的onCreate 方法,从而使得你有机会在调用Application的onCreate方法之前对测试框架做些调整。

?当测试用例结束时,测试用例的tearDown 方法会被调用,然后会调用Application 的onDestroy()方法停止和销毁Application.

Dependency Injection 每个Application都依赖于运行它的Context 对象,Android 测试框架允许你注入一个Mock的或者孤立的context 对象,以实现真正的单元测试,如果只是想做一般的测试,你的Application方法将被注入全功能的Context对象,你可以使用setContext 来注入你定义的Mock 的Context对象,setContext 必须在createApplication 之前调用。测试框架提供了如MockContext, RenamingDelegatingContext, ContextWrapper 来帮助你构造用于测试Applicaton的Context对象。

本例的代码如下:

public class ApiDemosApplicationTests

extends ApplicationTestCase {

public ApiDemosApplicationTests() {

super(ApiDemosApplication.class);

}

@Override

protected void setUp() throws Exception {

super.setUp();

}

@SmallTest

public void testPreconditions() {

}

/**

* Test basic startup/shutdown of Application

*/

@MediumTest

public void testSimpleCreate() {

createApplication();

}

}

有几个新知识

1. @SmallTest 和@MediumTest标注

Android测试框架可以使用@SmallTest,@MediumTest和@LargeTest 来标注测试方法,这些分类划分主要是根据测试访问数据的位置,如本地,SD卡,网络,下表为通常划分测试等级的基本方法:

Feature Small Medium Large

Network access No localhost only 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 properties No Yes Yes

Time limit (seconds) 60 300 900+

2. testPreconditions

testPreconditions 测试主要用来运行其它测试方法之前来校验Application 对象的初始化情况,和setUp类似,但和setUp 不同的是,testPreconditions只会被运行一次,而setUp通常在执行每个测试方法之前都会运行一次,一般需把它做为Application第一个测试方法,但由于JUnit使用Reflection 来取得测试方法,因此并不一定能保证testPreconditions一定在其它测试方法之前运行。

testSimpleCreate 为测试Application 的测试方法,调用createApplication 会触发Application 的onCreate 方法,测试结束后,执行tearDown ,然后调用Application 的onDestroy 方法,如果Application 的onCreate, onDestroy 运行抛出异常的话,则本测试方法失败,否则表示测试通过。

ApplicationTestCase 还提供了一个terminateApplication 中止Application,可以测试Application 的onTerminate 方法。

Android测试教程(10):

ActivityInstrumentationTestCase2示例

ActivityInstrumentationTestCase2 主要用来测试一个或多个Activity的功能测试,使用和最终应用同样的运行环境来测试Activity的功能。可以使用正常系统Context (非Mock)来测试Activity的功能。并允许你创建一些Mock Intent 用来测试Activity的响应。要注意的是,这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。

ActivityInstrumentationTestCase2 的继承关系如下图所示:

它的getActivity() 方法可以取得被测试的Activity的实例对象。

public class ApiDemosTest

extends ActivityInstrumentationTestCase2 {

public ApiDemosTest() {

super(ApiDemos.class);

}

public void testActivityTestCaseSetUpProperly() {

assertNotNull("activity should be launched successfully",

getActivity());

}

}

测试方法testActivityTestCaseSetUpProperly 使用getActivity() ,主要目的是测试本测试的Activity能否正常启动,测试getActivity() 是否非空。

此外ActivityInstrumentationTestCase2 还提供了两个方法:

setActivityInitialTouchMode(boolean) 在启动Activity之前设置TouchMode

setActivityIntent(Intent) 可以设置启动Activity的Intent 对象来测试Activity

Android测试教程(11):ActivityUnitTestCase示例

ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。

ActivityUnitTestCase 的类继承关系如下图:

应该要注意的是,作为单纯的单元测试,被测试的Activity 不运行在一般应用运行的环境中也不和其它Activity产生交互。在这种情况下,不能调用下面的方法,如果调用一般会抛出异常:

createPendingResult(int, Intent, int)

startActivityIfNeeded(Intent, int)

startActivityFromChild(Activity, Intent, int)

startNextMatchingActivity(Intent)

getCallingActivity()

getCallingPackage()

createPendingResult(int, Intent, int)

getTaskId()

isTaskRoot()

moveTaskToBack(boolean)

下面的方法可以调用,但一般不起任何作用,你可以使用getStartedActivityIntent()和getStartedActivityRequest() 来检查参数值。

startActivity(Intent)

startActivityForResult(Intent, int)

下面的方法也可以调用,一般也无效果,可以使用isFinishCalled() 和getFinishedActivityRequest检查传入的参数。

finish()

finishFromChild(Activity)

finishActivity(int)

ForwardingTest 的代码如下:

public class ForwardingTest

extends ActivityUnitTestCase {

private Intent mStartIntent;

private Button mButton;

public ForwardingTest() {

super(Forwarding.class);

}

@Override

protected void setUp() throws Exception {

super.setUp();

mStartIntent = new Intent(Intent.ACTION_MAIN); }

@MediumTest

public void testPreconditions() {

startActivity(mStartIntent, null, null);

mButton = (Button) getActivity().findViewById(R.id.go);

assertNotNull(getActivity());

assertNotNull(mButton);

}

@MediumTest

public void testSubLaunch() {

Forwarding activity

= startActivity(mStartIntent, null, null);

mButton = (Button) activity.findViewById(R.id.go);

mButton.performClick();

assertNotNull(getStartedActivityIntent());

assertTrue(isFinishCalled());

}

@MediumTest

public void testLifeCycleCreate() {

Forwarding activity

= startActivity(mStartIntent, null, null);

getInstrumentation().callActivityOnStart(activity);

getInstrumentation().callActivityOnResume(activity);

getInstrumentation().callActivityOnPause(activity);

getInstrumentation().callActivityOnStop(activity);

}

}

在setUp 中,创建了一个Mock Intent 对象mStartIntent 用于测试Activity。

按惯例测试方法testPreconditions 通常作为第一个测试方法,如果该方法Fail的话,表示测试所需的条件不满足,此时其它测试一般也会Fail 。但这个方法并不一定是第一个运行。

testSubLaunch 可以测试当前Activity能否成功启动其它Activity,方法getStartedActivityRequest 返回当前Activity调用startActivityForResult(Intent, int) 的request code. 方法isFinishCalled 将在当前activity 调用finish()或finishActivity, finishFromChild 后返回true. Forwarding 示例参照Android ApiDemos 示例解析(7):App->Activity->Forwarding

testLifeCycleCreate 测试Activity的生命周期回调函数,使用getInstrumentation 取的Instrumentation 对象,通过Instrumentation对象可以调用Activity对应的生命周期回调函数来测试Activity的onCreate, onStart,onResume 等方法。

ActivityUnitTestCase 还提供了sendKeys 方法模拟按键事件,可以用来测试UI。Android测试教程(12):ServiceTestCase示例

ServiceTestCase 为测试Service提供了一个可控的测试环境,它提供对Service 生命周期的基本支持,并可以通过注入一些依赖对象来控制测试环境以便测试Service。

ServiceTestCase的类继承如下图所示:

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 )

(完整word版)AndroidAPP开发期末复习资料

1.短信的内容提供者是() A. ContactProvider B. MessageProvider C. SmsProvider D. TelephonyProvider 2.以下是Android中用于xml解析方式的是()。 A. SAX B. DOM C. XmlPullParser D. Juint 3.下列选项中,关于Bitmap类描述正确的是()。 A. Bitmap类表示画 B. Bitmap类代表画布 C. Bitmap类是最常用的绘图类 D. Bitmap类表示位图工厂 4.Dalvik虚拟机是基于()的架构。 A.栈 B.堆 C. 寄存器 D. 存储器 5.在Android UI开发中,常见的刮刮卡是通过()实现的。 A.FrameLayout B.LinearLayout C.RelativeLayout D.TableLayout 6.注册一个短信到来的广播事件需要在清单文件配置什么权限()。 A. B. C. D. 7.关于服务的创建说法错误的是()。 A. Android中创建服务需要继承Service类 B. Android 中的服务需要在清单文件配置。

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测试环境搭建

基本安装 一、Java JDK 1、Java JDK下载: 网页: https://www.360docs.net/doc/389334220.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.360docs.net/doc/389334220.html,/downloads/下载解压缩后放在根目录,不要放在中文文件夹里面三、Android SDK

地址:https://www.360docs.net/doc/389334220.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应用开发期末考试题

试题 一、选择题 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 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基础阶段 测试题

一、选择题(每题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练习题及答案

练习题 一、选择题 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程序设计》期末试题B

一、判断题(每小题2分,共10分) 1、Android是J2ME的一个实现。() 2、View是ViewGroup的子类。() 3、一个Intent可以包含多个category。() 4、Android系统下的文件,可以被本系统里的所有应用程序访问。() 5、无论Service是以启动方式还是绑定方式运行,该Service类都要重写onBind 方法。() 二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分) 1、下列关于继承的哪项叙述是正确的?() A、在Java中类允许多重继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口允许继承自另一个接口 2、以下哪种方式不能退出当前活动状态的Activity?() A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 3、对于TextView,使用哪个属性来设置显示的文本?() A、android:textSize B、android:text C、android:textColor D、android:string 4、要处理Button的点击事件,需要注册哪个监听器?() A、OnClickListener() B、OnButtonClickListener() C、OnButtonListener() D、OnItemClickListener() 5、浏览网页使用的Intent的Action是什么?() A、ACTION_CALL B、ACTION_EDIT C、ACTION_SEND D、ACTION_VIEW 6、Android 关于启动方式的service生命周期的onCreate()和onStartCommand()方法,说法正确的是()

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测试教程 (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手机测试环境搭建

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期末考大题(沈阳师范大学)

1.SQLite数据库 public class MySqliteDB extends SQLiteOpenHelper { public MySqliteDB(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version);} public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists people ("+"pid integer primary key,"+ "pname text,"+"page integer)");} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}} public class MainActivity extends Activity { Button btn;MySqliteDB mydb; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/389334220.html,yout.activity_main); mydb=new MySqliteDB(this, "MyDB", null, 1); btn=(Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { SQLiteDatabase db=mydb.getReadableDatabase();}});} public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;}} 2.添加ToggleButton public class Example_55 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/389334220.html,yout.main); ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton); toggleButton.setChecked(true); 3.Spinner下拉列表框

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.它主要用来把数据绑定到组件上

相关文档
最新文档