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 作者:mapdigitAndroid测试教程(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):测试相关APIAndroid的测试框架相关的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 来运行测试用例。
InstrumentationAndroid 的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 testmActivity = getActivity();// Get a handle to the Activity object's//main UI widget, a SpinnermSpinner= (Spinner)mActivity.findViewById(com.android.example.spinner.R.id.Spinner01);// Set the Spinner to a known positionmActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);// Stop the activity - The onDestroy()//method should save the state of the SpinnermActivity.finish();// Re-start the Activity - the onResume()//method should restore the state of the SpinnermActivity = getActivity();// Get the Spinner's current positionint currentPosition = mActivity.getSpinnerPosition();// Assert that the current position is the//same as the starting positionassertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);其中关键的一个方法是getActivity(),只有调用getActivity()后被测试的activity 才会启动。