Oli*_*etz 8 android-jetpack-compose android-jetpack-compose-testing
在jetpack compose测试(在真实设备上运行)中触发后退按钮按下的推荐方法是什么?
我想:
@get:Rule()
val composeTestRule = createAndroidComposeRule(MyActivity::class.java)
@Test
fun test() {
// Here would be some setup code, assertions and navigating into a second screen
// Navigate back to previous screen
composeTestRule.onRoot().performKeyPress(KeyEvent(NativeKeyEvent(0, KeyEvent.KEYCODE_BACK)))
// continue...
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
java.lang.IllegalStateException: KeyEvent can't be processed because this key input node is not active.
Run Code Online (Sandbox Code Playgroud)
我没有任何特殊的按键/导航逻辑,仅使用导航撰写库的开箱即用功能。
我最终使用了 ActivityScenarioRule:
composeTestRule.activityRule.scenario.onActivity { activity ->
activity.onBackPressedDispatcher.onBackPressed()
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否是正确的方法,但它确实有效。
编辑:正如 LN-12 正确指出的那样,您应该使用onBackPressedDispatcher来支持API 33 的预测后退手势。
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |