CTS中自定義(新增)一項測試計劃Plan
查看官網并沒有找到自定義plan的具體操作,只是告訴你可以新建,于是自己琢磨了下,發(fā)現還真能跑起來,下面說下方法:
說明: $android-cts指的是你在官網下的cts測試包,解壓之后得到的路徑,類似
...\android-cts-6.0_r8-linux_x86-arm\android-cts\的這種格式,請自行替換
1. 進入$android-cts\repository\plans 目錄,里面有一堆的xml文件,這里面是CTS自帶的plans,文件名為plans名稱###

plans目錄
2. 復制CTS.xml文件,并將文件名修改為MyPlan.xml,其中MyPlan即為你自定義的plan的名稱,完成后使用任意的編輯器打開它###

xml內容
可以看到TestPlan節(jié)點里面有很多Entry節(jié)點,Entry節(jié)點的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節(jié)點包括如下屬性:
- name屬性 ---- 用于指定包名,比如“android,admin"
- abi屬性 ---- 用于指定abi,比如"armeabi-v7a"或則"arm64-v8a"等,不指定的話,默認全執(zhí)行
- 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