Redmi Note5运行Espresso测试报错Activity无法进入请求生命周期状态
解决方案
1. 调整MIUI系统权限设置
MIUI对后台启动Activity有独有的拦截规则,即便关闭了MIUI优化也可能残留限制,需要手动开启以下权限:
- 找到测试App的应用信息页,进入「权限管理」
- 开启「后台弹出界面」权限(部分MIUI版本叫「显示在其他应用上层」/「悬浮窗」权限)
- 开启「自启动」权限
- 重启设备后再运行测试验证
2. 测试代码适配修改
如果系统权限调整后还是有问题,可对测试代码做以下适配:
针对非主Activity的测试,改用Intent方式指定启动Flag
val intent = Intent(ApplicationProvider.getApplicationContext(), TargetActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) } val activityScenario = ActivityScenario.launch<TargetActivity>(intent)
降级ActivityScenario版本
当前使用的androidx.test:core:1.4.0版本在部分MIUI设备上存在兼容问题,可降级到1.3.0版本验证:
androidTestImplementation "androidx.test:core:1.3.0"
3. 替代方案
如果以上方案都不生效,可改用ActivityTestRule(虽然已废弃,但对旧版本MIUI兼容性更好):
@get:Rule val activityRule = ActivityTestRule(TargetActivity::class.java, false, false) @Test fun test_activityDisplay() { activityRule.launchActivity(null) onView(withId(R.id.target_layout)).check(matches(isDisplayed())) }
内容的提问来源于stack exchange,提问作者Abhimanyu
相关产品推荐
相关产品推荐

