前言:
google源代码中的cts测试用例集目录为:source_android4.2/cts/tests/tests/ (source_android4.2表示android4.2代码存放路径),该目录下有一个测试用例集example文件夹;下面就以这个用例集为例,讲述怎样编写自己的cts测试用例集;
结构如下:
example
├── AndroidManifest.xml
└── src
└── android
└── example
├── cts
步骤:
1、 在cts/tests/tests/目录下创建一个自己的用例集(文件夹)名称XXX;
2、 在该文件夹中构建如下结构:
XXX
├── AndroidManifest.xml(可以拷贝example下该文件)
├── Android.mk(可以拷贝example下该文件)
└── src
└── android
└──XXX
└── cts
3、 编写测试代码
前提:
判断测试的接口或类是属于修改了原生代码中的哪个包下面的类(可以参考google文档:http://developer.android.com/intl/zh-CN/reference/packages.html);
然后在source_android4.2/cts/tests/tests/目录下找到对应的测试包,参考其代码的编写;
具体操作:
在src/android/XXX/cts目录下添加自己的用例;(XXX为自己的测试用例集的名称,例如:yunos)
细节说明:
1、google官方cts测试用例中,对一个类进行测试时,并没有对该类的所有方法进行测试,而是测试了该类中使用最频繁的一些方法;所以我们自己编程测试用例时,也可以按照这样的原则进行操作;
2、对于“窗口控件类”中使用的的res资源文件的目录在source_android4\cts\tests\res
3、最好是在eclipse中编写,需要res文件的,可以先拷贝到当前工程下,这样可以通过eclipse检查编程中的语法错误;
4、包名的格式:package android.XXX.cts;
4、 修改XXX/目录下的Android.mk文件
LOCAL_PACKAGE_NAME := CtsXXXTestCases(这个变量是定义自己的测试用例集的名称;编译后会生成同名的APK文件)
LOCAL_INSTRUMENTATION_FOR := CtsTestStubs(这个变量定位的是一些涉及到虚拟机的测试用例,使用junit框架;TestStubs这个类在目录cts\tools\vm-tests-tf\src\dot\junit\opcodes下)
5、修改XXX/目录下的AndroidManifest.xml文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.cts.XXX">
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<application>
<uses-library android:name="android.test.runner" />
<activity android:name=”android.XXX.cts.activity的名称”/>(说明:这个是测试activity时容易忽略的地方)
</application>
<instrumentation android:name="android.test.InstrumentationCtsTestRunner"
android:targetPackage="com.android.cts.stub"
android:label="CTS tests of android.XXX"/>
</manifest>
6、修改source_android4.2/cts目录下的CtsTestCaseList.mk;(重要)
在该文件中给变量cts_test_packages追加自己测试用例集名称CtsXXXTestCases
说明:该文件在编译的时候会被build/core/tasks/cts.mk调用,生成最终的CTS包。
对CtsTestCaseList.mk文件说明:
CTS_COVERAGE_TEST_CASE_LIST(核心变量)
├── cts_support_packages(该变量包含的是测试依赖的一些用例,其对于代码目录为cts/hostsidetests)
├──CtsAccelerationTestStubs \
├──CtsDelegatingAccessibilityService \
├──CtsDeviceAdmin \
├──CtsMonkeyApp \
├──CtsMonkeyApp2 \
├──CtsSomeAccessibilityServices \
├──CtsTestStubs \
├──SignatureTest \
├──TestDeviceSetup \
├──$(cts_security_apps_list)
├── cts_test_packages(该变量对应的是cts/tests/tests/目录下的测试用例)
二、编译自己的cts包
执行make cts -j4
三、在真机上进行测试
由于完整进行cts测试要很长时间,所以我们可以自己创建一个测试计划,步骤如下:
1、将cts包解压,在android-cts\repository\plans下创建一个名为XXX的xml文件;
2、这个xml文件格式为:
<?xml version="1.0" encoding="UTF-8"?>
<TestPlan version="1.0">
<Entry uri="android.XXX"/>
</TestPlan>
3、进行cts测试时执行run cts -- plan XXX