TouchTargetSizeCheck在Espresso无障碍自动化测试中未正常触发
问题根因
你当前遇到的TouchTargetSizeCheck未触发问题,核心是ATF默认仅会抛出严重(SEVERE) 级别的无障碍错误,而触摸目标尺寸不达标默认被判定为警告(WARNING)级别,默认配置下不会导致测试失败。
修复方案
1. 调整无障碍检查的严重程度阈值
修改MainActivityTest.kt中的ATF初始化配置,显式指定需要抛出异常的严重等级,同时明确启用所有检查项:
@RunWith(AndroidJUnit4::class) @LargeTest class MainActivityTest { @get:Rule var activityScenarioRule: ActivityScenarioRule<MainActivity> = ActivityScenarioRule(MainActivity::class.java) @Before fun setup() { AccessibilityChecks.enable() // 检查整个根视图所有控件 .setRunChecksFromRootView(true) // 调整阈值:警告及以上级别的问题都抛出异常 .setThrowExceptionForSeverity(SeverityLevel.WARNING) // 显式启用所有内置检查项,确保TouchTargetSizeCheck被加载 .setChecks(AccessibilityChecks.getDefaultChecks()) } @Test fun testIncrement() { Espresso.onView(withId(R.id.btnIncrement)) .perform(ViewActions.click()) Espresso.onView(withId(R.id.tvCount)) .check(ViewAssertions.matches(withText("1"))) } }
2. 优化交互控件的属性声明
在activity_main.xml中,给用作按钮的两个TextView显式添加可交互属性,避免ATF未识别为可点击控件跳过检查:
<TextView android:id="@+id/btnDecrement" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" android:text="-" /> <TextView android:id="@+id/btnIncrement" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" android:text="+" />
3. 可选:升级依赖版本
如果你使用的3.4.0版本仍然存在漏检问题,可将espresso相关依赖升级到3.5.1及以上版本,该版本修复了多个ATF检查项不生效的已知问题:
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.5.1'
修改完成后重新运行测试,即可正常触发TouchTargetSizeCheck错误,提示你两个按钮的触摸尺寸未达到至少48*48dp的无障碍要求。
内容的提问来源于stack exchange,提问作者Malik
相关产品推荐
相关产品推荐

