Android NavController UI测试在performClick上不更改屏幕



我正在尝试做一个简单的测试,其中:

屏幕1->单击"下一步"按钮->屏幕2

当前,如果我以正常方式启动应用程序并单击按钮,将显示下一个屏幕。

点击按钮执行:

navController.navigate(NEXT_SCREEN)

当我尝试在测试中做同样的事情并执行按钮时,点击:

composeTestRule.onNodeWithContentDescription(composeTestRule.activity.getString(R.string.continue_button))
.assertIsDisplayed()
.performClick()

它只是成功地完成了测试,并在不显示下一个屏幕的情况下关闭。我尝试在performClick之后添加composeTestRule.waitForIdle((,但它的行为仍然与完成测试而不显示下一个屏幕的方式相同。不确定我错过了什么。

如果您想检查是否显示了下一个屏幕,只需添加该屏幕的一些断言即可。让我们假设下一个屏幕具有文本";我是下一个";,您可以在测试中添加下一个代码:

composeTestRule.onNode(hasText("I'm the next one")).assertIsDisplayed()

此行检查第二个屏幕是否已打开。