CTS中自定义(新增)一项测试计划Plan
查看官网并没有找到自定义plan的具体操作,只是告诉你可以新建,于是自己琢磨了下,发现还真能跑起来,下面说下方法:
说明: $android-cts指的是你在官网下的cts测试包,解压之后得到的路径,类似
...\android-cts-6.0_r8-linux_x86-arm\android-cts\
的这种格式,请自行替换
1. 进入$android-cts\repository\plans
目录,里面有一堆的xml文件,这里面是CTS自带的plans,文件名为plans名称###
2. 复制CTS.xml文件,并将文件名修改为MyPlan.xml,其中MyPlan即为你自定义的plan的名称,完成后使用任意的编辑器打开它###
可以看到TestPlan节点里面有很多Entry节点,Entry节点的name字段即为测试的入口,其实也就是一个个测试包的包名,我们只需要仿造这个xml,进行填写,比如你需要测试的包名为android.app,android.admin,或者以及你自己编写的测试用例(假设包名为cxq.wifi),那么需要修改MyPlan.xml的内容为:
<?xml version="1.0" encoding="UTF-8"?>
<TestPlan version="1.0">
<Entry name="android.admin"/>
<Entry name="android.app"/>
<Entry name="cxq.wifi"/>
</TestPlan> `
说明:
Entry节点包括如下属性:
- name属性 ---- 用于指定包名,比如“android,admin"
- abi属性 ---- 用于指定abi,比如"armeabi-v7a"或则"arm64-v8a"等,不指定的话,默认全执行
- include属性 --- 用于指定包含哪些测试
- exclude属性 --- 用于指定不包含哪些测试
其中,include属性和exclude属性的内容应当遵循以下格式:
- 包含/不包含某些测试类,多个项之间用;分割
include="包名.类A;包名.类B;"
exclude="包名.类A;包名.类B;"
- 包含/不包含一个测试类下的某些用例,类名和用例名之间使用#连接,多个项之间用;分割
include="包名.类A#用例a;包名.类B#用例b;"
exclude="包名.类A#用例a;包名.类B#用例b;"
举个例子,
<?xml version="1.0" encoding="UTF-8"?>
<TestPlan version="1.0">
<Entry abi="armeabi-v7a" name="android.admin"/>
<Entry include="android.jni.cts.JniCTest;android.jni.cts.JniCppTest" name="android.jni"/>
<Entry exclude="android.provider.cts.BrowserTest;android.provider.cts.CalendarTest" name="android.provider"/>
<Entry include="android.os.cts.BuildVersionTest#testReleaseVersion;android.os.cts.BuildTest#testIsSecureUserBuild" name="android.os"/>
<Entry exclude="android.hardware.cts.CameraTest#testVideoSnapshot;android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata;android.hardware.cts.CameraGLTest#testSetPreviewTextureBothCallbacks;android.hardware.cts.CameraGLTest#testSetPreviewTexturePreviewCallback" name="android.hardware"/>
</TestPlan>
3. 运行你的plan
进入cts-tradefed控制台,这一步不清楚的请参考android官网译文《Running CTS tests》-运行cts
在控制台下运行命令:
run cts --plan MyPlan