如何在 Espresso 测试中重启 Android 应用程序(/应用程序状态)?

How to restart Android app (/app state) within Espresso test?

我正在测试登录页面 - 特别是 "Autologin" 复选框,以便登录一次的用户将在重新打开应用程序时自动登录(默认情况下,用户应从头开始登录)。

如何模拟这种行为?重启应用程序是唯一的方法吗?我能否以某种方式将应用程序重置为初始屏幕(就像重新启动一样),但应该保留 userdata/cookies?

我最初的解决方案是通过 Espresso.pressBackUnconditionally() 关闭应用程序(它类似于 Espresso.pressBack() 但当 Espresso 导航到应用程序或被测进程之外时不会抛出异常)并启动 activity 再次:activityRule.launchActivity(null).

然而,最后我们提出了更复杂的重新启动解决方案 activity instrumentation:

with(activityRule) {
    finishActivity()
    launchActivity(null)
}