Android 经验: 不能用 instrument 替代的 CTS 测试

本文探讨了Android CTS测试框架中,为何不能简单地使用`am instrument`命令代替CTS测试。问题源于`AccessibilityFocusAndInputFocusSyncTest`执行失败,原因在于未设置`TouchExplorationEnable`为1。`AccessibilityManagerTest`同样需要此设置。CTS通过`AccessibilityTestRunner`在设备上安装`tradefed-host.jar`并执行特定操作,而`am instrument`则忽略这一过程,导致某些必要的配置不生效。解决方案包括使用`cts-tradefed`执行测试或直接修改数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Android CTS 测试框架内部本质是调用 am instrument , 因此过去我认为 cts 的命令我都可以用 am instrument 替代, 但最近遇到问题了


执行 AccessibilityFocusAndInputFocusSyncTest 得到错误
adb shell am instrument -e class android.accessibilityservice.cts.AccessibilityFocusAndInputFocusSyncTest#testActionAccessibilityFocus
 -w com.android.cts.accessibilityservice/android.test.InstrumentationCtsTestRunner

查了原因是没有TouchExplorationEnable设置为 1


而测试 AccessibilityManagerTest  也失败,因为它明确要求 TouchExplorationEnable 设置为1
adb shell am instrument -e class android.view.accessibility.cts.AccessibilityManagerTest -wandroid.view.cts.accessibility/android.test.android.test.InstrumentationTestRunner


测试 CtsAccessibilityTestCases.xml 说明如下:
<TestPackage appNameSpace="android.view.cts.accessibility" appPackageName="android.accessibility" name="CtsAccessibilit
yTestCases" runner="android.test.InstrumentationCtsTestRunner" testType="com.android.cts.tradefed.testtype.AccessibilityTestRunner" version="1.0">   


注意这个  testType="com.android.cts.tradefed.testtype.AccessibilityTestRunner"


再查看 AccessibilityTestRunner ,它会编译出tradefed-host.jar ( 在是 devices 上跑 ,所以这个 host应该理解的 devices  )
cts/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java#enableAccessibilityAndServicesAndTouchExploration


因此, CTS 在执行测试的时候, 先把tradefed-host.jar, 安装到 devices 上, 而后根据 testType 决定去调用AccessibilityTestRunner


但用 adb shell am instrument ... 跑测试,它会略过 AccessibilityTestRunner的执行,所以
enableAccessibilityAndServicesAndTouchExploration 不会被调用

用 android-cts/tools/cts-tradefed 执行
run cts -p android.accessibility (  或者是创建一个只有 android.accessibility  的 plan  ) 就不会遇到这种情况,因为AccessibilityTestRunner 会执行

(当然也可以用 sqlite3 打开 db, 直接改)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值